diff options
author | Magnus Ahltorp <map@kth.se> | 2015-09-28 16:42:04 +0200 |
---|---|---|
committer | Linus Nordberg <linus@nordu.net> | 2015-11-11 13:32:37 +0100 |
commit | 9b2e72510b33547794207043714f52e16239b3f5 (patch) | |
tree | 5e9461b694a4c9c25108e8843122aa42454a1a6f /c_src/permdb.h | |
parent | 90760d10d14c11ee4c99826163c206bbf20a77f6 (diff) |
Added permdb
Diffstat (limited to 'c_src/permdb.h')
-rw-r--r-- | c_src/permdb.h | 59 |
1 files changed, 59 insertions, 0 deletions
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 |