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