root/source3/include/dbwrap.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* 
   2    Unix SMB/CIFS implementation.
   3    Database interface wrapper around tdb
   4    Copyright (C) Volker Lendecke 2005-2007
   5    
   6    This program is free software; you can redistribute it and/or modify
   7    it under the terms of the GNU General Public License as published by
   8    the Free Software Foundation; either version 3 of the License, or
   9    (at your option) any later version.
  10    
  11    This program is distributed in the hope that it will be useful,
  12    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14    GNU General Public License for more details.
  15    
  16    You should have received a copy of the GNU General Public License
  17    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18 */
  19 
  20 #ifndef __DBWRAP_H__
  21 #define __DBWRAP_H__
  22 
  23 struct db_record {
  24         TDB_DATA key, value;
  25         NTSTATUS (*store)(struct db_record *rec, TDB_DATA data, int flag);
  26         NTSTATUS (*delete_rec)(struct db_record *rec);
  27         void *private_data;
  28 };
  29 
  30 struct db_context {
  31         struct db_record *(*fetch_locked)(struct db_context *db,
  32                                           TALLOC_CTX *mem_ctx,
  33                                           TDB_DATA key);
  34         int (*fetch)(struct db_context *db, TALLOC_CTX *mem_ctx,
  35                      TDB_DATA key, TDB_DATA *data);
  36         int (*traverse)(struct db_context *db,
  37                         int (*f)(struct db_record *rec,
  38                                  void *private_data),
  39                         void *private_data);
  40         int (*traverse_read)(struct db_context *db,
  41                              int (*f)(struct db_record *rec,
  42                                       void *private_data),
  43                              void *private_data);
  44         int (*get_seqnum)(struct db_context *db);
  45         int (*get_flags)(struct db_context *db);
  46         int (*transaction_start)(struct db_context *db);
  47         int (*transaction_commit)(struct db_context *db);
  48         int (*transaction_cancel)(struct db_context *db);
  49         int (*parse_record)(struct db_context *db, TDB_DATA key,
  50                             int (*parser)(TDB_DATA key, TDB_DATA data,
  51                                           void *private_data),
  52                             void *private_data);
  53         void *private_data;
  54         bool persistent;
  55 };
  56 
  57 bool db_is_local(const char *name);
  58 
  59 struct db_context *db_open(TALLOC_CTX *mem_ctx,
  60                            const char *name,
  61                            int hash_size, int tdb_flags,
  62                            int open_flags, mode_t mode);
  63 
  64 struct db_context *db_open_rbt(TALLOC_CTX *mem_ctx);
  65 
  66 struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
  67                                const char *name,
  68                                int hash_size, int tdb_flags,
  69                                int open_flags, mode_t mode);
  70 
  71 struct db_context *db_open_tdb2(TALLOC_CTX *mem_ctx,
  72                                 const char *name,
  73                                 int hash_size, int tdb_flags,
  74                                 int open_flags, mode_t mode);
  75 
  76 struct messaging_context;
  77 
  78 #ifdef CLUSTER_SUPPORT
  79 struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
  80                                 const char *name,
  81                                 int hash_size, int tdb_flags,
  82                                 int open_flags, mode_t mode);
  83 #endif
  84 
  85 struct db_context *db_open_file(TALLOC_CTX *mem_ctx,
  86                                 struct messaging_context *msg_ctx,
  87                                 const char *name,
  88                                 int hash_size, int tdb_flags,
  89                                 int open_flags, mode_t mode);
  90 
  91 
  92 NTSTATUS dbwrap_delete(struct db_context *db, TDB_DATA key);
  93 NTSTATUS dbwrap_store(struct db_context *db, TDB_DATA key,
  94                       TDB_DATA data, int flags);
  95 TDB_DATA dbwrap_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
  96                       TDB_DATA key);
  97 NTSTATUS dbwrap_delete_bystring(struct db_context *db, const char *key);
  98 NTSTATUS dbwrap_store_bystring(struct db_context *db, const char *key,
  99                                TDB_DATA data, int flags);
 100 TDB_DATA dbwrap_fetch_bystring(struct db_context *db, TALLOC_CTX *mem_ctx,
 101                                const char *key);
 102 
 103 #endif /* __DBWRAP_H__ */

/* [<][>][^][v][top][bottom][index][help] */