]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/jcr.h
ebl Add Plugin debug after a fatal signal.
[bacula/bacula] / bacula / src / jcr.h
index 6fa98ab276400ba7af7c012d309971cbb1ba17c8..1339948812b7f6fc802d3630a6bed10a7458ba4e 100644 (file)
@@ -99,6 +99,7 @@ enum {
    MT_OLDEST_VOL,
    MT_POOL_OCCUPANCY,
    MT_POOL_TIME,
+   MT_POOL_UNCOPIED_JOBS,
    MT_CLIENT,
    MT_VOLUME,
    MT_JOB,
@@ -141,6 +142,7 @@ struct B_DB;
 struct ATTR_DBR;
 struct Plugin;
 struct save_pkt;
+struct bpContext;
 
 #ifdef FILE_DAEMON
 class htable;
@@ -180,6 +182,8 @@ public:
    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 */
@@ -212,7 +216,8 @@ public:
    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 */
@@ -239,11 +244,12 @@ public:
    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 */
@@ -325,7 +331,6 @@ public:
    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 */
@@ -410,6 +415,15 @@ public:
 
 };
 
+/*
+ * 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.
@@ -452,4 +466,8 @@ extern void b_free_jcr(const char *file, int line, JCR *jcr);
 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_ */