From 9b2e72510b33547794207043714f52e16239b3f5 Mon Sep 17 00:00:00 2001 From: Magnus Ahltorp Date: Mon, 28 Sep 2015 16:42:04 +0200 Subject: Added permdb --- c_src/permdb.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 c_src/permdb.h (limited to 'c_src/permdb.h') diff --git a/c_src/permdb.h b/c_src/permdb.h new file mode 100644 index 0000000..ee1cd66 --- /dev/null +++ b/c_src/permdb.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2015, NORDUnet A/S. + * See LICENSE for licensing information. + */ + +#ifndef PERMDB_H +#define PERMDB_H + +#define entriespernode 4 + +typedef uint64_t node_entry; +typedef uint64_t node_offset; + +typedef struct node_object { + node_entry data[entriespernode]; +} node_object; + +#define NODE_ENTRY_DIRTY_NODE 0x7FFFFFFFFFFFFFFFULL +#define NODE_ENTRY_ISDATA 0x8000000000000000ULL +#define NODE_ENTRY_OFFSET_MASK 0x7FFFFFFFFFFFFFFFULL + +struct permdb_object; + +typedef struct permdb_object permdb_object; + +node_entry +get_entry_in_node(node_object node, unsigned char n); + +char * +read_internal_data(permdb_object *state, node_offset offset, unsigned int length); + +node_object +readnode(permdb_object *state, node_offset offset, const char *cachekey); + +node_offset +datasize(permdb_object *state); + +int +addvalue(permdb_object *state, const char *key, unsigned int keylength, const char *data, unsigned int datalength); + +char * +getvalue(permdb_object *state, const char *key, int keylen, unsigned int *datalen); + +void +delete_all_nodes_in_cache(permdb_object *state); + +void +portloop(permdb_object *state); + +permdb_object * +permdb_alloc(const char *dbpath); + +void +permdb_free(permdb_object *state); + +int +committree(permdb_object *state); + +#endif -- cgit v1.1