]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/jcr.h
o initial add
[bacula/bacula] / bacula / src / jcr.h
index 096661c7d672e767c2f908ad0b5e7af583c689f3..39a570820f4eba1e2d0f3f8135119c90f767ed61 100644 (file)
@@ -109,15 +109,22 @@ typedef void (JCR_free_HANDLER)(JCR *jcr);
 
 /* Job Control Record (JCR) */
 class JCR {
+private:
+   pthread_mutex_t mutex;             /* jcr mutex */
+   volatile int _use_count;           /* use count */
 public:
-   void inc_use_count(void) {P(mutex); use_count++; V(mutex); };
-   void dec_use_count(void) {P(mutex); use_count--; V(mutex); };
+   void inc_use_count(void) {P(mutex); _use_count++; V(mutex); };
+   void dec_use_count(void) {P(mutex); _use_count--; V(mutex); };
+   int  use_count() { return _use_count; };
+   void init_mutex(void) {pthread_mutex_init(&mutex, NULL); };
+   void destroy_mutex(void) {pthread_mutex_destroy(&mutex); };
+   void lock() {P(mutex); };
+   void unlock() {V(mutex); };
+   bool is_job_canceled() {return job_canceled(this); };
 
    /* Global part of JCR common to all daemons */
    dlink link;                        /* JCR chain link */
-   volatile int use_count;            /* use count */
    pthread_t my_thread_id;            /* id of thread controlling jcr */
-   pthread_mutex_t mutex;             /* jcr mutex */
    BSOCK *dir_bsock;                  /* Director bsock or NULL if we are him */
    BSOCK *store_bsock;                /* Storage connection socket */
    BSOCK *file_bsock;                 /* File daemon connection socket */
@@ -169,7 +176,7 @@ public:
    /* This should be empty in the library */
 
 #ifdef DIRECTOR_DAEMON
-   /* Director Daemon specific part of JCR */
+   /* Director Daemon specific data part of JCR */
    pthread_t SD_msg_chan;             /* Message channel thread id */
    pthread_cond_t term_wait;          /* Wait for job termination */
    workq_ele_t *work_item;            /* Work queue item if scheduled */
@@ -235,6 +242,7 @@ public:
    char *big_buf;                     /* I/O buffer */
    POOLMEM *compress_buf;             /* Compression buffer */
    int32_t compress_buf_size;         /* Length of compression buffer */
+   void *pZLIB_compress_workset;      /* zlib compression session data */
    int replace;                       /* Replace options */
    int buf_size;                      /* length of buffer */
    FF_PKT *ff;                        /* Find Files packet */
@@ -246,7 +254,7 @@ public:
    pthread_t heartbeat_id;            /* id of heartbeat thread */
    volatile BSOCK *hb_bsock;          /* duped SD socket */
    volatile BSOCK *hb_dir_bsock;      /* duped DIR socket */
-   POOLMEM *RunAfterJob;              /* Command to run after job */
+   alist *RunScripts;                 /* Commands to run before and after job */
    bool pki_sign;                     /* Enable PKI Signatures? */
    bool pki_encrypt;                  /* Enable PKI Encryption? */
    DIGEST *digest;                    /* Last file's digest context */
@@ -285,7 +293,8 @@ public:
    bool spool_data;                   /* set to spool data */
    int CurVol;                        /* Current Volume count */
    DIRRES* director;                  /* Director resource */
-   alist *dirstore;                   /* list of storage devices sent by DIR */ 
+   alist *write_store;                /* list of write storage devices sent by DIR */ 
+   alist *read_store;                 /* list of read devices sent by DIR */
    alist *reserve_msgs;               /* reserve fail messages */
    bool write_part_after_job;         /* Set to write part after job */
    bool PreferMountedVols;            /* Prefer mounted vols rather than new */
@@ -313,8 +322,6 @@ public:
 
 };
 
-
-
 /*
  * Structure for all daemons that keeps some summary
  *  info on the last job run.