MT_OLDEST_VOL,
MT_POOL_OCCUPANCY,
MT_POOL_TIME,
+ MT_POOL_UNCOPIED_JOBS,
MT_CLIENT,
MT_VOLUME,
MT_JOB,
struct ATTR_DBR;
struct Plugin;
struct save_pkt;
+struct bpContext;
#ifdef FILE_DAEMON
class htable;
int32_t get_JobType() { return m_JobType; };
int32_t get_JobLevel() { return m_JobLevel; };
+ const char *get_OperationName(); /* in lib/jcr.c */
+ const char *get_ActionName(bool past); /* in lib/jcr.c */
void set_JobLevel(int32_t JobLevel); /* in lib/jcr.c */
void set_JobType(int32_t JobType); /* in lib/jcr.c */
bool JobReads(); /* in lib/jcr.c */
time_t start_time; /* when job actually started */
time_t run_time; /* used for computing speed */
time_t end_time; /* job end time */
- time_t wait_time; /* when job have started to wait */
+ time_t wait_time_sum; /* cumulative wait time since job start */
+ time_t wait_time; /* timestamp when job have started to wait */
POOLMEM *client_name; /* client name */
POOLMEM *RestoreBootstrap; /* Bootstrap file to restore */
POOLMEM *stime; /* start time for incremental/differential */
guid_list *id_list; /* User/group id to name list */
bool accurate; /* true if job is accurate */
- void *plugin_ctx_list; /* list of contexts for plugins */
- void *plugin_ctx; /* current plugin context */
+ bpContext *plugin_ctx_list; /* list of contexts for plugins */
+ bpContext *plugin_ctx; /* current plugin context */
Plugin *plugin; /* plugin instance */
save_pkt *plugin_sp; /* plugin save packet */
char *plugin_options; /* user set options for plugin */
+ bool cmd_plugin; /* Set when processing a command Plugin = */
/* Daemon specific part of JCR */
/* This should be empty in the library */
POOLMEM *last_fname; /* last file saved/verified */
POOLMEM *acl_text; /* text of ACL for backup */
int32_t last_type; /* type of last file saved/verified */
- /*********FIXME********* add missing files and files to be retried */
int incremental; /* set if incremental for SINCE */
time_t mtime; /* begin time for SINCE */
int listing; /* job listing in estimate */
};
+/*
+ * Setting a NULL in tsd doesn't clear the tsd but instead tells
+ * pthreads not to call the tsd destructor. Consequently, we
+ * define this *invalid* jcr address and stuff it in the tsd
+ * when the jcr is not valid.
+ */
+#define INVALID_JCR ((JCR *)(-1))
+
+
/*
* Structure for all daemons that keeps some summary
* info on the last job run.
extern void free_jcr(JCR *jcr);
#endif
+/* Used to display specific job information after a fatal signal */
+typedef void (dbg_jcr_hook_t)(JCR *jcr, FILE *fp);
+void dbg_jcr_add_hook(dbg_jcr_hook_t *fct);
+
#endif /* __JCR_H_ */