/* 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 */
/* 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 */
uint32_t num_files_examined; /* files examined this job */
POOLMEM *last_fname; /* last file saved/verified */
POOLMEM *acl_text; /* text of ACL for backup */
+ int 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 */
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 */
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 */
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 */
};
-
-
/*
* Structure for all daemons that keeps some summary
* info on the last job run.