diff options
| author | yangwei <[email protected]> | 2024-11-25 19:22:41 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2024-11-25 19:22:41 +0800 |
| commit | e2776414401af0bc02beb305b0d366fe3828cffd (patch) | |
| tree | 46aecfbe9531f15717626b2b4ec8d2a39e5603f2 /infra | |
| parent | 40083638202cbedea0728ce0ebe49472212aad9f (diff) | |
✨ feat(deps/utable): define kv in utable.h temporary
Diffstat (limited to 'infra')
| -rw-r--r-- | infra/kv/kv.c | 236 | ||||
| -rw-r--r-- | infra/module_manager/module_manager.c | 6 | ||||
| -rw-r--r-- | infra/module_manager/module_manager_interna.h | 10 |
3 files changed, 2 insertions, 250 deletions
diff --git a/infra/kv/kv.c b/infra/kv/kv.c deleted file mode 100644 index 78fe347..0000000 --- a/infra/kv/kv.c +++ /dev/null @@ -1,236 +0,0 @@ -#include "stellar/kv.h" - -#include "uthash/uthash.h" - -#include <stdlib.h> -#include <string.h> - - -struct kv *kv_new_with_interger(const char *key, size_t key_sz, long long value) -{ - struct kv *kv = malloc(sizeof(struct kv)); - kv->key = malloc(key_sz); - memcpy(kv->key, key, key_sz); - kv->key_sz = key_sz; - kv->vtype = KV_VALUE_TYPE_INTEGER; - kv->value_longlong = value; - return kv; -} - -struct kv *kv_new_with_double(const char *key, size_t key_sz, double value) -{ - struct kv *kv = malloc(sizeof(struct kv)); - kv->key = malloc(key_sz); - memcpy(kv->key, key, key_sz); - kv->key_sz = key_sz; - kv->vtype = KV_VALUE_TYPE_DOUBLE; - kv->value_double = value; - return kv; -} - -struct kv *kv_new_with_string(const char *key, size_t key_sz, const char *value, size_t value_sz) -{ - struct kv *kv = malloc(sizeof(struct kv)); - kv->key = malloc(key_sz); - memcpy(kv->key, key, key_sz); - kv->key_sz = key_sz; - kv->vtype = KV_VALUE_TYPE_STRING; - kv->value_str.str = malloc(value_sz); - memcpy(kv->value_str.str, value, value_sz); - kv->value_str.sz = value_sz; - return kv; -} - -struct kv *kv_new_with_uuid(const char *key, size_t key_sz, const uuid_t value) -{ - struct kv *kv = malloc(sizeof(struct kv)); - kv->key = malloc(key_sz); - memcpy(kv->key, key, key_sz); - kv->key_sz = key_sz; - kv->vtype = KV_VALUE_TYPE_UUID; - memcpy(kv->value_uuid, value, sizeof(uuid_t)); - return kv; -} - -struct kv *kv_new_with_interger_array(const char *key, size_t key_sz, long long value[], size_t n_value) -{ - struct kv *kv = malloc(sizeof(struct kv)); - kv->key = malloc(key_sz); - memcpy(kv->key, key, key_sz); - kv->key_sz = key_sz; - kv->vtype = KV_VALUE_TYPE_INTERGE_ARRAY; - kv->value_interger_array.elems = malloc(sizeof(long long) * n_value); - memcpy(kv->value_interger_array.elems, value, sizeof(long long) * n_value); - kv->value_interger_array.n_elems = n_value; - return kv; -} -struct kv *kv_new_with_double_array(const char *key, size_t key_sz, double value[], size_t n_value) -{ - struct kv *kv = malloc(sizeof(struct kv)); - kv->key = malloc(key_sz); - memcpy(kv->key, key, key_sz); - kv->key_sz = key_sz; - kv->vtype = KV_VALUE_TYPE_DOUBLE_ARRAY; - kv->value_double_array.elems = malloc(sizeof(double) * n_value); - memcpy(kv->value_double_array.elems, value, sizeof(double) * n_value); - kv->value_double_array.n_elems = n_value; - return kv; -} -struct kv *kv_new_with_string_array(const char *key, size_t key_sz, const char* value[], size_t value_sz[], size_t n_value) -{ - struct kv *kv = malloc(sizeof(struct kv)); - kv->key = malloc(key_sz); - memcpy(kv->key, key, key_sz); - kv->key_sz = key_sz; - kv->vtype = KV_VALUE_TYPE_STRING_ARRAY; - kv->value_str_array.elems = malloc(sizeof(char*) * n_value); - kv->value_str_array.sz = malloc(sizeof(size_t) * n_value); - for (size_t i = 0; i < n_value; i++) - { - kv->value_str_array.elems[i] = malloc(value_sz[i]); - memcpy(kv->value_str_array.elems[i], value[i], value_sz[i]); - kv->value_str_array.sz[i] = value_sz[i]; - } - kv->value_str_array.n_elems = n_value; - return kv; -} - -struct kv *kv_new_with_uuid_array(const char *key, size_t key_sz, const uuid_t value[], size_t n_value) -{ - struct kv *kv = malloc(sizeof(struct kv)); - kv->key = malloc(key_sz); - memcpy(kv->key, key, key_sz); - kv->key_sz = key_sz; - kv->vtype = KV_VALUE_TYPE_UUID_ARRAY; - kv->value_uuid_array.elems = malloc(sizeof(uuid_t) * n_value); - memcpy(kv->value_uuid_array.elems, value, sizeof(uuid_t) * n_value); - kv->value_uuid_array.n_elems = n_value; - return kv; -} - -struct kv *kv_duplicate(const struct kv *kv) -{ - if(kv == NULL)return NULL; - struct kv *new_kv = malloc(sizeof(struct kv)); - new_kv->key = malloc(kv->key_sz); - memcpy(new_kv->key, kv->key, kv->key_sz); - new_kv->key_sz = kv->key_sz; - new_kv->vtype = kv->vtype; - switch (kv->vtype) - { - case KV_VALUE_TYPE_STRING: - new_kv->value_str.str = malloc(kv->value_str.sz); - memcpy(new_kv->value_str.str, kv->value_str.str, kv->value_str.sz); - new_kv->value_str.sz = kv->value_str.sz; - break; - case KV_VALUE_TYPE_INTERGE_ARRAY: - new_kv->value_interger_array.elems = malloc(sizeof(long long) * kv->value_interger_array.n_elems); - memcpy(new_kv->value_interger_array.elems, kv->value_interger_array.elems, sizeof(long long) * kv->value_interger_array.n_elems); - new_kv->value_interger_array.n_elems = kv->value_interger_array.n_elems; - break; - case KV_VALUE_TYPE_DOUBLE_ARRAY: - new_kv->value_double_array.elems = malloc(sizeof(double) * kv->value_double_array.n_elems); - memcpy(new_kv->value_double_array.elems, kv->value_double_array.elems, sizeof(double) * kv->value_double_array.n_elems); - new_kv->value_double_array.n_elems = kv->value_double_array.n_elems; - break; - case KV_VALUE_TYPE_STRING_ARRAY: - new_kv->value_str_array.elems = malloc(sizeof(char*) * kv->value_str_array.n_elems); - new_kv->value_str_array.sz = malloc(sizeof(size_t) * kv->value_str_array.n_elems); - for (size_t i = 0; i < kv->value_str_array.n_elems; i++) - { - new_kv->value_str_array.elems[i] = malloc(kv->value_str_array.sz[i]); - memcpy(new_kv->value_str_array.elems[i], kv->value_str_array.elems[i], kv->value_str_array.sz[i]); - new_kv->value_str_array.sz[i] = kv->value_str_array.sz[i]; - } - new_kv->value_str_array.n_elems = kv->value_str_array.n_elems; - break; - case KV_VALUE_TYPE_UUID_ARRAY: - new_kv->value_uuid_array.elems = malloc(sizeof(uuid_t) * kv->value_uuid_array.n_elems); - memcpy(new_kv->value_uuid_array.elems, kv->value_uuid_array.elems, sizeof(uuid_t) * kv->value_uuid_array.n_elems); - new_kv->value_uuid_array.n_elems = kv->value_uuid_array.n_elems; - break; - default: - break; - } - return new_kv; -} - -void kv_free(struct kv *kv) -{ - if(kv == NULL)return; - - if(kv->key)free(kv->key); - switch (kv->vtype) - { - case KV_VALUE_TYPE_STRING: - if(kv->value_str.str)free(kv->value_str.str); - break; - case KV_VALUE_TYPE_INTERGE_ARRAY: - if(kv->value_interger_array.elems)free(kv->value_interger_array.elems); - break; - case KV_VALUE_TYPE_DOUBLE_ARRAY: - if(kv->value_double_array.elems)free(kv->value_double_array.elems); - break; - case KV_VALUE_TYPE_STRING_ARRAY: - for (size_t i = 0; i < kv->value_str_array.n_elems; i++) - { - if(kv->value_str_array.elems[i])free(kv->value_str_array.elems[i]); - } - if(kv->value_str_array.elems)free(kv->value_str_array.elems); - if(kv->value_str_array.sz)free(kv->value_str_array.sz); - break; - case KV_VALUE_TYPE_UUID_ARRAY: - if(kv->value_uuid_array.elems)free(kv->value_uuid_array.elems); - break; - default: - break; - } - free(kv); -} - -struct kv_table_elem -{ - struct kv *kv; - kv_ref_cleanup_cb *ref_cleanup_cb; - void *cleanup_cb_arg; - UT_hash_handle hh; -}; - -struct kv_table -{ - struct kv_table_elem *elems; - struct kv_table_elem *iter; -}; - -struct kv_table *kv_table_new(size_t n_reserved __attribute__((unused))) -{ - struct kv_table *table = malloc(sizeof(struct kv_table)); - table->elems = NULL; - table->iter = NULL; - return table; -} - -void kv_table_free(struct kv_table *table) -{ - if(table == NULL)return; - struct kv_table_elem *elem, *tmp; - HASH_ITER(hh, table->elems, elem, tmp) - { - HASH_DEL(table->elems, elem); - if(elem->ref_cleanup_cb)elem->ref_cleanup_cb(elem->kv, elem->cleanup_cb_arg); - free(elem); - } - free(table); -} - -int kv_table_add(struct kv_table *table, const struct kv *kv) -{ - if(table == NULL || kv == NULL)return -1; - struct kv_table_elem *elem = malloc(sizeof(struct kv_table_elem)); - elem->kv = kv_duplicate(kv); - elem->ref_cleanup_cb = NULL; - elem->cleanup_cb_arg = NULL; - HASH_ADD_KEYPTR(hh, table->elems, kv->key, kv->key_sz, elem); - return 0; -} -int kv_table_del(struct kv_table *table, const char *key, size_t key_sz); diff --git a/infra/module_manager/module_manager.c b/infra/module_manager/module_manager.c index 2574267..99b6fc6 100644 --- a/infra/module_manager/module_manager.c +++ b/infra/module_manager/module_manager.c @@ -13,17 +13,13 @@ #include "toml/toml.h" -struct module_manager *module_manager_new(const char *module_spec_toml_path, int max_thread_num, struct mq_schema *mq_schema, struct logger *logger) +struct module_manager *module_manager_new(struct module_specification mod_specs[], size_t n_mod, int max_thread_num, struct mq_schema *mq_schema, struct logger *logger) { struct module_manager *mod_mgr = CALLOC(struct module_manager, 1); mod_mgr->schema.max_thread_num=max_thread_num; mod_mgr->schema.mq_schema=mq_schema; mod_mgr->schema.logger=logger; - if(module_spec_toml_path==NULL)return mod_mgr; - FILE *fp = fopen(module_spec_toml_path, "r"); - if (fp == NULL)return mod_mgr; - mod_mgr->module_spec_toml_path = strdup(module_spec_toml_path); int mod_num = 0; toml_table_t *conf = toml_parse_file(fp, NULL, 0); diff --git a/infra/module_manager/module_manager_interna.h b/infra/module_manager/module_manager_interna.h index 120c12a..3e47bf0 100644 --- a/infra/module_manager/module_manager_interna.h +++ b/infra/module_manager/module_manager_interna.h @@ -22,15 +22,7 @@ struct module struct module_spec_load { struct module *mod; - module_on_instance_init_func *on_instance_init_cb; - module_on_instance_exit_func *on_instance_exit_cb; - module_on_thread_init_func *on_thread_init_cb; - module_on_thread_exit_func *on_thread_exit_cb; - char *path; - char *instance_init_cb_name; - char *instance_exit_cb_name; - char *thread_init_cb_name; - char *thread_exit_cb_name; + struct module_specification spec; bool init_succ; }__attribute__((aligned(sizeof(void*)))); |
