r23220: Add traverse_read to dbwrap
[sfrench/samba-autobuild/.git] / source / include / dbwrap.h
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 2 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, write to the Free Software
18    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20
21 #ifndef __FILEDB_H__
22 #define __FILEDB_H__
23
24 struct db_record {
25         TDB_DATA key, value;
26         NTSTATUS (*store)(struct db_record *rec, TDB_DATA data, int flag);
27         NTSTATUS (*delete_rec)(struct db_record *rec);
28         void *private_data;
29 };
30
31 struct db_context {
32         struct db_record *(*fetch_locked)(struct db_context *db,
33                                           TALLOC_CTX *mem_ctx,
34                                           TDB_DATA key);
35         int (*fetch)(struct db_context *db, TALLOC_CTX *mem_ctx,
36                      TDB_DATA key, TDB_DATA *data);
37         int (*traverse)(struct db_context *db,
38                         int (*f)(struct db_record *db,
39                                  void *private_data),
40                         void *private_data);
41         int (*traverse_read)(struct db_context *db,
42                              int (*f)(struct db_record *db,
43                                       void *private_data),
44                              void *private_data);
45         int (*get_seqnum)(struct db_context *db);
46         void *private_data;
47 };
48
49 struct db_context *db_open(TALLOC_CTX *mem_ctx,
50                            const char *name,
51                            int hash_size, int tdb_flags,
52                            int open_flags, mode_t mode);
53
54
55 #endif /* __FILEDB_H__ */