|
hamsterdb Embedded Database
2.1.1
|
00001 00016 #include <stdio.h> 00017 #include <string.h> 00018 #include <stdlib.h> /* for exit() */ 00019 #include <ham/hamsterdb.h> 00020 00021 #define LOOP 10 00022 00023 void 00024 error(const char *foo, ham_status_t st) { 00025 printf("%s() returned error %d: %s\n", foo, st, ham_strerror(st)); 00026 exit(-1); 00027 } 00028 00029 int 00030 main(int argc, char **argv) { 00031 int i; 00032 ham_status_t st; /* status variable */ 00033 ham_env_t *env; /* hamsterdb Environment object */ 00034 ham_db_t *db; /* hamsterdb Database object */ 00035 ham_key_t key = {0}; /* the structure for a key */ 00036 ham_record_t record = {0}; /* the structure for a record */ 00037 00038 /* 00039 * Connect to the server which should listen at 8080. The server is 00040 * implemented in server1.c. 00041 */ 00042 st = ham_env_create(&env, "http://localhost:8080/env1.db", 0, 0, 0); 00043 if (st != HAM_SUCCESS) 00044 error("ham_env_create", st); 00045 00046 /* now open a Database in this Environment */ 00047 st = ham_env_open_db(env, &db, 13, 0, 0); 00048 if (st != HAM_SUCCESS) 00049 error("ham_env_open_db", st); 00050 00051 /* now we can insert, delete or lookup values in the database */ 00052 for (i = 0; i < LOOP; i++) { 00053 key.data = &i; 00054 key.size = sizeof(i); 00055 00056 record.size = key.size; 00057 record.data = key.data; 00058 00059 st = ham_db_insert(db, 0, &key, &record, 0); 00060 if (st != HAM_SUCCESS) 00061 error("ham_db_insert", st); 00062 } 00063 00064 /* now lookup all values */ 00065 for (i = 0; i < LOOP; i++) { 00066 key.data = &i; 00067 key.size = sizeof(i); 00068 00069 st = ham_db_find(db, 0, &key, &record, 0); 00070 if (st != HAM_SUCCESS) 00071 error("ham_db_find", st); 00072 00073 /* check if the value is ok */ 00074 if (*(int *)record.data != i) { 00075 printf("ham_db_find() ok, but returned bad value\n"); 00076 return (-1); 00077 } 00078 } 00079 00080 /* erase everything */ 00081 for (i = 0; i < LOOP; i++) { 00082 key.data = &i; 00083 key.size = sizeof(i); 00084 00085 st = ham_db_erase(db, 0, &key, 0); 00086 if (st != HAM_SUCCESS) 00087 error("ham_db_erase", st); 00088 } 00089 00090 /* and make sure that the database is empty */ 00091 for (i = 0; i < LOOP; i++) { 00092 key.data = &i; 00093 key.size = sizeof(i); 00094 00095 st = ham_db_find(db, 0, &key, &record, 0); 00096 if (st != HAM_KEY_NOT_FOUND) 00097 error("ham_db_find", st); 00098 } 00099 00100 /* close the database handle */ 00101 st = ham_db_close(db, 0); 00102 if (st != HAM_SUCCESS) 00103 error("ham_db_close", st); 00104 00105 printf("success!\n"); 00106 return (0); 00107 } 00108
1.7.6.1