]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/cats.h
Remove old code from bdb.c
[bacula/bacula] / bacula / src / cats / cats.h
index 4570d4b27a9bfe9c3ad1acb76e5aee2b2411648c..1dd5f08424eca7acff1af2a433b06919ade45b11 100644 (file)
@@ -1,6 +1,8 @@
 /*
  * SQL header file
  *
+ *   by Kern E. Sibbald
+ *
  *   Anyone who accesses the database will need to include
  *   this file.
  *
@@ -8,6 +10,8 @@
  * the external world, and definitions destined only
  * for the external world. This is control with
  * the define __SQL_C, which is defined only in sql.c
+ *
+ *    Version $Id$
  */
 
 /*
 
 #ifndef __SQL_H_
 #define __SQL_H_ 1
+
 
 typedef void (DB_LIST_HANDLER)(void *, char *);
 typedef int (DB_RESULT_HANDLER)(void *, int, char **);
+
+#define db_lock(mdb)   _db_lock(__FILE__, __LINE__, mdb)
+#define db_unlock(mdb) _db_unlock(__FILE__, __LINE__, mdb)
+
+#ifdef xxxxx_old_way_of_doing_it
+#define db_lock(mdb)   P(mdb->mutex)
+#define db_unlock(mdb) V(mdb->mutex)
+#define db_lock(mdb) \
+   do { int errstat; if ((errstat=rwl_writelock(&(mdb->lock)))) \
+      e_msg(__FILE__, __LINE__, M_ABORT, 0, "rwl_writelock failure. ERR=%s\n",\
+           strerror(errstat)); \
+   } while(0)
+
+#define db_unlock(x) \
+   do { int errstat; if ((errstat=rwl_writeunlock(&(mdb->lock)))) \
+         e_msg(__FILE__, __LINE__, M_ABORT, 0, "rwl_writeunlock failure. ERR=%s\n",\
+           strerror(errstat)); \
+   } while(0)
+#endif
+
  
 #ifdef __SQL_C
 
@@ -69,7 +93,8 @@ typedef struct s_sql_field {
  */
 typedef struct s_db {
    BQUEUE bq;                         /* queue control */
-   pthread_mutex_t mutex;
+/* pthread_mutex_t mutex; */
+   rwlock_t lock;                     /* transaction lock */
    struct sqlite *db;
    char **result;
    int nrow;                          /* nrow returned from sqlite */
@@ -86,8 +111,10 @@ typedef struct s_db {
    char *db_password;
    int connected;
    char *sqlite_errmsg;               /* error message returned by sqlite */
-   char *errmsg;                      /* nicely edited error message */
-   char *cmd;                         /* SQL command string */
+   POOLMEM *errmsg;                   /* nicely edited error message */
+   POOLMEM *cmd;                      /* SQL command string */
+   POOLMEM *cached_path;
+   uint32_t cached_path_id;
 } B_DB;
 
 
@@ -135,7 +162,8 @@ extern void my_sqlite_free_table(B_DB *mdb);
  */
 typedef struct s_db {
    BQUEUE bq;                         /* queue control */
-   pthread_mutex_t mutex;
+/* pthread_mutex_t mutex; */
+   rwlock_t lock;                     /* transaction lock */
    MYSQL mysql;
    MYSQL *db;
    MYSQL_RES *result;
@@ -146,8 +174,10 @@ typedef struct s_db {
    char *db_password;
    int have_insert_id;                /* do have insert_id() */
    int connected;
-   char *errmsg;                      /* nicely edited error message */
-   char *cmd;                         /* SQL command string */
+   POOLMEM *errmsg;                   /* nicely edited error message */
+   POOLMEM *cmd;                      /* SQL command string */
+   POOLMEM *cached_path;
+   uint32_t cached_path_id;
 } B_DB;
 
 
@@ -175,7 +205,7 @@ typedef struct s_db {
 /* Change this each time there is some incompatible
  * file format change!!!!
  */
-#define BDB_VERSION 8                 /* file version number */
+#define BDB_VERSION 9                 /* file version number */
 
 struct s_control {
    int bdb_version;                   /* Version number */
@@ -194,7 +224,8 @@ struct s_control {
  */
 typedef struct s_db {
    BQUEUE bq;                         /* queue control */
-   pthread_mutex_t mutex;             /* single thread lock */
+/* pthread_mutex_t mutex;  */         /* single thread lock */
+   rwlock_t lock;                     /* transaction lock */
    int ref_count;                     /* number of times opened */
    struct s_control control;          /* control file structure */
    int cfd;                           /* control file device */
@@ -205,8 +236,10 @@ typedef struct s_db {
    FILE *clientfd;                    /* Client records fd */
    FILE *filesetfd;                   /* FileSet records fd */
    char *db_name;                     /* name of database */
-   char *errmsg;                      /* nicely edited error message */
-   char *cmd;                         /* Command string */
+   POOLMEM *errmsg;                   /* nicely edited error message */
+   POOLMEM *cmd;                      /* Command string */
+   POOLMEM *cached_path;
+   uint32_t cached_path_id;
 } B_DB;
 
 #endif /* HAVE_MYSQL */
@@ -388,9 +421,7 @@ typedef struct {
 } FILESET_DBR;
 
 
-
 #include "protos.h"
-
 #include "jcr.h"
-
 #endif /* __SQL_H_ */