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__
2017-01-10 14:48:07 +01:00
struct tevent_context ;
struct tevent_req ;
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 ;
2016-09-12 17:30:55 +02:00
NTSTATUS ( * storev ) ( struct db_record * rec , const TDB_DATA * dbufs ,
int num_dbufs , int flag ) ;
2011-08-24 14:53:42 +02:00
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 ) ;
2017-01-10 14:48:07 +01:00
struct tevent_req * ( * parse_record_send ) (
TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct db_context * db ,
TDB_DATA key ,
void ( * parser ) ( TDB_DATA key , TDB_DATA data , void * private_data ) ,
void * private_data ,
enum dbwrap_req_state * req_state ) ;
NTSTATUS ( * parse_record_recv ) ( struct tevent_req * req ) ;
2016-11-09 08:45:59 +01:00
NTSTATUS ( * do_locked ) ( struct db_context * db , TDB_DATA key ,
void ( * fn ) ( struct db_record * rec ,
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 ) ;
2015-09-20 16:26:06 +02:00
size_t ( * id ) ( struct db_context * db , uint8_t * id , size_t idlen ) ;
2012-06-22 15:07:44 +09:30
const char * name ;
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 ;
} ;
2011-07-06 16:40:21 +02:00
2014-01-28 12:04:38 +01:00
# define DBWRAP_LOCK_ORDER_MIN DBWRAP_LOCK_ORDER_1
2014-01-28 11:52:36 +01:00
# define DBWRAP_LOCK_ORDER_MAX DBWRAP_LOCK_ORDER_3
2014-01-28 11:54:06 +01:00
# define DBWRAP_LOCK_ORDER_VALID(order) \
( ( ( order ) > = DBWRAP_LOCK_ORDER_MIN ) & & \
( ( order ) < = DBWRAP_LOCK_ORDER_MAX ) )
2011-07-06 16:40:21 +02:00
# endif /* __DBWRAP_PRIVATE_H__ */