/* * Copyright (c) 2000-2006 Alberto Reggiori * Dirk-Willem van Gulik * * NOTICE * * This product is distributed under a BSD/ASF like license as described in the 'LICENSE' * file you should have received together with this source code. If you did not get a * a copy of such a license agreement you can pick up one at: * * http://rdfstore.sourceforge.net/LICENSE * */ #include "dbms.h" #include "dbms_comms.h" /* Number of fetch/store ops to try. */ #define N (50000) #define M (100) static void _note(dbms_cause_t event, int counter) { fprintf(stderr,"Note %d callback\n",event); switch(event) { case DBMS_EVENT_RECONNECT: fprintf(stderr,"\tLost connection, is reconnecting.\n"); break; case DBMS_EVENT_WAITING: fprintf(stderr,"\tIs connecting but long wait\n"); break; default: fprintf(stderr,"\tUnk. callback event\n"); }; } static void _err(char * msg, int erx) { fprintf(stderr,"Error %d - callback\n\t%s\n--\n",erx,msg); } int main(int argc, char * * argv) { dbms * d = dbms_connect( "test", NULL, 0, DBMS_XSMODE_DROP, NULL, NULL, &_note, &_err, 0); dbms_error_t e; if (!d) { perror("Duh"); exit(1); } else printf("Open (and create) ok\n"); e = dbms_comms(d, TOKEN_PING, NULL, NULL, NULL, NULL, NULL); if (e) { fprintf(stderr,"Op failed %s\n", dbms_get_error(d)); exit(1); } else printf("Ping ok\n"); { DBT key,val; int r = 0; key.data = (char *) "Foo"; key.size=strlen((char *)key.data); val.data = NULL; val.size = 0; e = dbms_comms(d, TOKEN_FETCH, &r, &key, NULL, NULL, &val); if (e) { fprintf(stderr,"Op FETCH failed %s\n", dbms_get_error(d)); exit(1); } else if (r == 0) { fprintf(stderr,"Fetch returned a 'found' - EEK!\n"); exit(1); } if (r != 1) { fprintf(stderr,"Fetch returned a strange value - EEK!\n"); exit(1); } else printf("Fetch ok (it came up empty)\n"); } { DBT key,val; int r = 0; /* include traling \0 to make printing on retrival easier */ key.data = (char *) "Foo"; key.size=strlen((char *)key.data)+1; val.data = (char *) "Bar"; val.size = strlen((char *)val.data) + 1; e = dbms_comms(d, TOKEN_STORE, &r, &key, &val, NULL, NULL); if (e) { fprintf(stderr,"Op STORE failed %s\n", dbms_get_error(d)); exit(1); } else if (r != 0) { fprintf(stderr,"Fetch returned a strange value - EEK!\n"); exit(1); } else printf("Store ok\n"); } { DBT key,val; int r = 0; key.data = (char *) "Foo"; key.size=strlen((char *)key.data)+1; e = dbms_comms(d, TOKEN_FETCH, &r, &key, NULL, NULL, &val); if (e) { fprintf(stderr,"Op FETCH failed %s\n", dbms_get_error(d)); exit(1); } else if (r != 0) { fprintf(stderr,"Fetch returned a strange value - EEK!\n"); exit(1); }; if (strcmp((char *)(val.data),"Bar")) { fprintf(stderr,"Fetch failed (it came up with \"%s\")\n", (char *)(val.data)); exit(1); }; printf("Fetch ok (it came up with \"%s\")\n", (char *)(val.data)); free(val.data); } { int j; char * pad = NULL; for(j=0;j