2011-07-06 16:40:21 +02:00
/*
Unix SMB / CIFS implementation .
Database interface wrapper around tdb - private header
Copyright ( C ) Volker Lendecke 2005 - 2007
Copyright ( C ) Gregor Beck 2011
Copyright ( C ) Michael Adam 2011
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 3 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# ifndef __DBWRAP_PRIVATE_H__
# define __DBWRAP_PRIVATE_H__
2011-08-24 14:53:42 +02:00
struct db_record {
2012-01-02 13:30:51 +01:00
struct db_context * db ;
2011-08-24 14:53:42 +02:00
TDB_DATA key , value ;
NTSTATUS ( * store ) ( struct db_record * rec , TDB_DATA data , int flag ) ;
NTSTATUS ( * delete_rec ) ( struct db_record * rec ) ;
void * private_data ;
} ;
struct db_context {
struct db_record * ( * fetch_locked ) ( struct db_context * db ,
TALLOC_CTX * mem_ctx ,
TDB_DATA key ) ;
2012-03-27 14:31:04 +02:00
struct db_record * ( * try_fetch_locked ) ( struct db_context * db ,
TALLOC_CTX * mem_ctx ,
TDB_DATA key ) ;
2011-08-24 14:53:42 +02:00
int ( * traverse ) ( struct db_context * db ,
int ( * f ) ( struct db_record * rec ,
void * private_data ) ,
void * private_data ) ;
int ( * traverse_read ) ( struct db_context * db ,
int ( * f ) ( struct db_record * rec ,
void * private_data ) ,
void * private_data ) ;
int ( * get_seqnum ) ( struct db_context * db ) ;
int ( * transaction_start ) ( struct db_context * db ) ;
2012-06-22 15:07:44 +09:30
NTSTATUS ( * transaction_start_nonblock ) ( struct db_context * db ) ;
2011-08-24 14:53:42 +02:00
int ( * transaction_commit ) ( struct db_context * db ) ;
int ( * transaction_cancel ) ( struct db_context * db ) ;
2011-12-08 15:50:33 +01:00
NTSTATUS ( * parse_record ) ( struct db_context * db , TDB_DATA key ,
void ( * parser ) ( TDB_DATA key , TDB_DATA data ,
void * private_data ) ,
void * private_data ) ;
2011-08-24 14:53:42 +02:00
int ( * exists ) ( struct db_context * db , TDB_DATA key ) ;
int ( * wipe ) ( struct db_context * db ) ;
2012-06-22 15:07:43 +09:30
int ( * check ) ( struct db_context * db ) ;
2012-02-15 14:57:01 +01:00
void ( * id ) ( struct db_context * db , const uint8_t * * id , size_t * idlen ) ;
2012-06-22 15:07:44 +09:30
const char * name ;
2012-06-22 15:07:44 +09:30
int hash_size ;
2011-08-24 14:53:42 +02:00
void * private_data ;
2012-01-08 19:04:39 +01:00
enum dbwrap_lock_order lock_order ;
2011-08-24 14:53:42 +02:00
bool persistent ;
2012-02-15 15:08:29 +01:00
void ( * stored_callback ) ( struct db_context * db , struct db_record * rec ,
void * private_data ) ;
void * stored_callback_private_data ;
2011-08-24 14:53:42 +02:00
} ;
2011-07-06 16:40:21 +02:00
# endif /* __DBWRAP_PRIVATE_H__ */