1 /*
2  *     Copyright (c) 2000-2006 Alberto Reggiori <areggiori@webweaving.org>
3  *                        Dirk-Willem van Gulik <dirkx@webweaving.org>
4  *
5  * NOTICE
6  *
7  * This product is distributed under a BSD/ASF like license as described in the 'LICENSE'
8  * file you should have received together with this source code. If you did not get a
9  * a copy of such a license agreement you can pick up one at:
10  *
11  *     http://rdfstore.sourceforge.net/LICENSE
12  *
13  */
14 
15 /*
16  *
17  * WARNING! if you change this file you have also to manually update ../../lib/DBMS.pm to be in-sync with these definitions
18  *
19  */
20 
21 #ifndef _H_DBMS_
22 #define _H_DBMS_
23 
24 #include "dbms_compat.h"
25 
26 typedef uint32_t	dbms_counter;
27 
28 typedef enum {
29 	DBMS_EVENT_RECONNECT,
30 	DBMS_EVENT_WAITING
31 } dbms_cause_t;
32 
33 typedef enum {
34 	DBMS_XSMODE_DEFAULT = 0,
35 	DBMS_XSMODE_RDONLY,
36 	DBMS_XSMODE_RDWR,
37 	DBMS_XSMODE_CREAT,
38 	DBMS_XSMODE_DROP
39 } dbms_xsmode_t;
40 
41 typedef int dbms_error_t;
42 
43 typedef struct {
44         char * name;
45         char * host;
46         unsigned long port;
47         int mode;
48         int sockfd;
49         unsigned long addr;
50 	int bt_compare_fcn_type;
51 
52 	void * (* malloc)(size_t s);
53 	void (* free)(void * adr);
54 	void (* callback)(dbms_cause_t cause, int cnt);
55         void (* error)(char * err, int erx);
56 
57 	char err[ 256 ];
58         } dbms;
59 
60 extern char *
61 dbms_get_error(
62 	dbms * me
63 );
64 
65 extern dbms *
66 dbms_connect(
67         char *name,
68 	char * host, int port,
69 	dbms_xsmode_t mode,
70         void *(*_my_malloc)( size_t size),
71         void(*_my_free)(void *),
72         void(*_my_report)(dbms_cause_t cause, int count),
73 	void(*_my_error)(char * err, int erx),
74 	int bt_compare_fcn_type
75 );
76 
77 extern dbms_error_t
78 dbms_disconnect(
79 	dbms * me
80 );
81 
82 extern dbms_error_t
83 dbms_comms (
84         dbms * me,
85         int token,
86         int * retval,
87         DBT * v1,
88         DBT * v2,
89         DBT * r1,
90         DBT * r2
91         );
92 
93 /* dbms_error_t values; beside normal
94  * errno values from libc et. al.
95  */
96 #define         E_UNDEF         1000
97 #define         E_NONNUL        1001
98 #define         E_FULLREAD      1002
99 #define         E_FULLWRITE     1003
100 #define         E_CLOSE         1004
101 #define         E_HOSTNAME      1005
102 #define         E_VERSION       1006
103 #define         E_PROTO         1007
104 #define         E_ERROR         1008
105 #define         E_NOMEM         1009
106 #define         E_RETRY         1010
107 #define         E_NOPE          1011
108 #define         E_XXX           1012
109 #define         E_TOOBIG        1013
110 #define         E_BUG           1014
111 
112 #endif
113