]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/jcr.h
start to tweak prune algo
[bacula/bacula] / bacula / src / jcr.h
index f9378d82a2a239fda163f2db6c50091973af5161..71a3362f5883f5f9b9ef47749c8cb051286e873c 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -33,7 +33,6 @@
  *
  * Kern Sibbald, Nov MM
  *
- *   Version $Id$
  */
 
 
 #define JT_SCAN                  'S'  /* Scan Job */
 
 /* Job Status. Some of these are stored in the DB */
-#define JS_Created               'C'  /* created but not yet running */
-#define JS_Running               'R'  /* running */
+#define JS_Canceled              'A'  /* canceled by user */
 #define JS_Blocked               'B'  /* blocked */
-#define JS_Terminated            'T'  /* terminated normally */
-#define JS_Warnings              'W'  /* Terminated normally with warnings */
-#define JS_ErrorTerminated       'E'  /* Job terminated in error */
-#define JS_Error                 'e'  /* Non-fatal error */
-#define JS_FatalError            'f'  /* Fatal error */
+#define JS_Created               'C'  /* created but not yet running */
 #define JS_Differences           'D'  /* Verify differences */
-#define JS_Canceled              'A'  /* canceled by user */
-#define JS_Incomplete            'I'  /* Incomplete Job */
+#define JS_ErrorTerminated       'E'  /* Job terminated in error */
 #define JS_WaitFD                'F'  /* waiting on File daemon */
-#define JS_WaitSD                'S'  /* waiting on the Storage daemon */
-#define JS_WaitMedia             'm'  /* waiting for new media */
+#define JS_Incomplete            'I'  /* Incomplete Job */
+#define JS_DataCommitting        'L'  /* Committing data (last despool) */
 #define JS_WaitMount             'M'  /* waiting for Mount */
-#define JS_WaitStoreRes          's'  /* Waiting for storage resource */
-#define JS_WaitJobRes            'j'  /* Waiting for job resource */
+#define JS_Running               'R'  /* running */
+#define JS_WaitSD                'S'  /* waiting on the Storage daemon */
+#define JS_Terminated            'T'  /* terminated normally */
+#define JS_Warnings              'W'  /* Terminated normally with warnings */
+
+#define JS_AttrDespooling        'a'  /* SD despooling attributes */
 #define JS_WaitClientRes         'c'  /* Waiting for Client resource */
 #define JS_WaitMaxJobs           'd'  /* Waiting for maximum jobs */
-#define JS_WaitStartTime         't'  /* Waiting for start time */
-#define JS_WaitPriority          'p'  /* Waiting for higher priority jobs to finish */
-#define JS_AttrDespooling        'a'  /* SD despooling attributes */
+#define JS_Error                 'e'  /* Non-fatal error */
+#define JS_FatalError            'f'  /* Fatal error */
 #define JS_AttrInserting         'i'  /* Doing batch insert file records */
+#define JS_WaitJobRes            'j'  /* Waiting for job resource */
 #define JS_DataDespooling        'l'  /* Doing data despooling */
-#define JS_DataCommitting        'L'  /* Committing data (last despool) */
+#define JS_WaitMedia             'm'  /* waiting for new media */
+#define JS_WaitPriority          'p'  /* Waiting for higher priority jobs to finish */
+#define JS_WaitStoreRes          's'  /* Waiting for storage resource */
+#define JS_WaitStartTime         't'  /* Waiting for start time */ 
 
 /* Migration selection types */
 enum {
@@ -178,12 +178,13 @@ private:
    volatile int32_t _use_count;       /* use count */
    int32_t m_JobType;                 /* backup, restore, verify ... */
    int32_t m_JobLevel;                /* Job level */
+   bool my_thread_killable;           /* can we kill the thread? */
 public:
    void lock() {P(mutex); };
    void unlock() {V(mutex); };
    void inc_use_count(void) {lock(); _use_count++; unlock(); };
    void dec_use_count(void) {lock(); _use_count--; unlock(); };
-   int32_t use_count() { return _use_count; };
+   int32_t use_count() const { return _use_count; };
    void init_mutex(void) {pthread_mutex_init(&mutex, NULL); };
    void destroy_mutex(void) {pthread_mutex_destroy(&mutex); };
    bool is_job_canceled() {return job_canceled(this); };
@@ -191,11 +192,10 @@ public:
    void setJobLevel(int32_t JobLevel) { m_JobLevel = JobLevel; };
    void set_JobType(int32_t JobType) { m_JobType = JobType; };
    void setJobType(int32_t JobType) { m_JobType = JobType; };
-   int32_t get_JobType() { return m_JobType; };
-   int32_t getJobType() { return m_JobType; };
-   int32_t get_JobLevel() { return m_JobLevel; };
-   int32_t getJobLevel() { return m_JobLevel; };
-   bool no_client_used() {
+   int32_t getJobType() const { return m_JobType; };
+   int32_t getJobLevel() const { return m_JobLevel; };
+   int32_t getJobStatus() const { return JobStatus; };
+   bool no_client_used() const {
       return (m_JobType == JT_MIGRATE || m_JobType == JT_COPY ||
               m_JobLevel == L_VIRTUAL_FULL);
    };
@@ -203,7 +203,9 @@ public:
    const char *get_ActionName(bool past); /* in lib/jcr.c */
    void setJobStatus(int JobStatus);      /* in lib/jcr.c */
    bool JobReads();                       /* in lib/jcr.c */
-   
+   void my_thread_send_signal(int sig);   /* in lib/jcr.c */
+   void set_killable(bool killable);      /* in lib/jcr.c */
+   bool is_killable() const { return my_thread_killable; };
 
    /* Global part of JCR common to all daemons */
    dlink link;                        /* JCR chain link */
@@ -213,8 +215,9 @@ public:
    BSOCK *file_bsock;                 /* File daemon connection socket */
    JCR_free_HANDLER *daemon_free_jcr; /* Local free routine */
    dlist *msg_queue;                  /* Queued messages */
+   pthread_mutex_t msg_queue_mutex;   /* message queue mutex */
+   bool dequeuing_msgs;               /* Set when dequeuing messages */
    alist job_end_push;                /* Job end pushed calls */
-   bool dequeuing;                    /* dequeuing messages */
    POOLMEM *VolumeName;               /* Volume name desired -- pool_memory */
    POOLMEM *errmsg;                   /* edited error message */
    char Job[MAX_NAME_LENGTH];         /* Unique name of this Job */
@@ -239,6 +242,7 @@ public:
    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 *JobIds;                   /* User entered string of JobIds */
    POOLMEM *RestoreBootstrap;         /* Bootstrap file to restore */
    POOLMEM *stime;                    /* start time for incremental/differential */
    char *sd_auth_key;                 /* SD auth key */
@@ -274,6 +278,7 @@ public:
    save_pkt *plugin_sp;               /* plugin save packet */
    char *plugin_options;              /* user set options for plugin */
    bool cmd_plugin;                   /* Set when processing a command Plugin = */
+   POOLMEM *comment;                  /* Comment for this Job */
 
    /* Daemon specific part of JCR */
    /* This should be empty in the library */
@@ -301,6 +306,7 @@ public:
    bool run_full_pool_override;
    bool run_inc_pool_override;
    bool run_diff_pool_override;
+   bool sd_canceled;                  /* set if SD canceled */
    FILESET *fileset;                  /* FileSet resource */
    CAT *catalog;                      /* Catalog resource */
    MSGS *messages;                    /* Default message handler */
@@ -355,6 +361,7 @@ public:
    /* File Daemon specific part of JCR */
    uint32_t num_files_examined;       /* files examined this job */
    POOLMEM *last_fname;               /* last file saved/verified */
+   POOLMEM *job_metadata;             /* VSS job metadata */
    acl_data_t *acl_data;              /* ACLs for backup/restore */
    xattr_data_t *xattr_data;          /* Extended Attributes for backup/restore */
    int32_t last_type;                 /* type of last file saved/verified */
@@ -472,7 +479,7 @@ struct s_last_job {
 };
 
 extern struct s_last_job last_job;
-extern DLL_IMP_EXP dlist * last_jobs;
+extern DLL_IMP_EXP dlist *last_jobs;
 
 
 /* The following routines are found in lib/jcr.c */