diff options
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 |