diff options
| author | zhengchao <[email protected]> | 2022-02-18 23:21:13 +0500 |
|---|---|---|
| committer | zhengchao <[email protected]> | 2022-02-18 23:21:13 +0500 |
| commit | 9bba90210a051f6637b7fc65fc67d9ed053a949b (patch) | |
| tree | 280ed916c47da51c42c77643becc45dbe5a8d251 /include | |
| parent | 5b06d5b19c3bfa26320a4837b756f4ce177943b4 (diff) | |
完成整体框架搭建。
Diffstat (limited to 'include')
| -rw-r--r-- | include/swarmkv/swarmkv.h | 52 |
1 files changed, 39 insertions, 13 deletions
diff --git a/include/swarmkv/swarmkv.h b/include/swarmkv/swarmkv.h index 5b56cc5..81203cd 100644 --- a/include/swarmkv/swarmkv.h +++ b/include/swarmkv/swarmkv.h @@ -1,3 +1,12 @@ +/* +*****************************Swarm KV****************************** +* SwarmKV is a embedded and distributed key-value storage library +* with peer-to-peer networking. +* Authors: Zheng Chao +* Jiang Ping +* Version 2022-01-24 version 2.0.0 +******************************************************************* +*/ #pragma once #include <stddef.h> @@ -8,26 +17,43 @@ extern "C" #endif - struct swarmkv_readoptions; - struct swarmkv_writeoptions; - struct swarmkv_store; - typedef void swarmkv_string_type_callback_func_t(const char * key, size_t keylen, - const char * value, size_t vallen, void * arg); +enum swarmkv_reply_type +{ + SWARMKV_REPLY_STRING=0, + SWARMKV_REPLY_ARRAY, + SWARMKV_REPLY_INTEGER, + SWARMKV_REPLY_NIL, + SWARMKV_REPLY_STATUS, + SWARMKV_REPLY_ERROR +}; +struct swarmkv_reply +{ + swarmkv_reply_type type, + long long integer; /* The integer when type is SWARMKV_REPLY_INTEGER */ + int len; /* Length of string */ + char *str; /* Used for both SWARMKV_REPLY_ERROR and SWARMKV_REPLY_STRING */ + size_t n_element; /* number of elements, for SWARMKV_REPLY_ARRAY */ + struct swarmkv_reply **element;/* elements vector for SWARMKV_REPLY_ARRAY */ +}; +void swarmkv_reply_free(struct swarmkv_reply *reply); + +struct swarmkv; +typedef void swarmkv_cmd_callback_func_t(const swarmkv_reply* reply, void * arg); - struct swarmkv_store *swarmkv_open(const char * cluster_name, unsigned int http_port, unsigned int p2p_port, void * mesa_handle_logger); - void swarmkv_close(struct swarmkv_store * store); +struct swarmkv_store *swarmkv_open(const char * cluster_name, unsigned int http_port, unsigned int p2p_port, void * mesa_handle_logger); +void swarmkv_close(struct swarmkv_store * store); - void swarmkv_get_string(struct swarmkv_store * store, - const char * key, size_t keylen, swarmkv_string_type_callback_func_t * cb, void * arg); - void swarmkv_set_string(struct swarmkv_store * store, - const char * key, size_t keylen, const char * value, size_t vallen); +void swarmkv_get_string(struct swarmkv * db, + const char * key, size_t keylen, swarmkv_cmd_callback_func_t * cb, void * arg); +void swarmkv_set_string(struct swarmkv * db, + const char * key, size_t keylen, const char * value, size_t vallen, swarmkv_cmd_callback_func_t * cb, void * arg); - char * swarmkv_del(struct swarmkv_store * store, const char * table, const struct swarmkv_readoptions * options, - const char * key, size_t keylen); +char * swarmkv_del(struct swarmkv_store * store, const char * table, const struct swarmkv_readoptions * options, + const char * key, size_t keylen); |
