summaryrefslogtreecommitdiff
path: root/infra
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-11-25 19:22:41 +0800
committeryangwei <[email protected]>2024-11-25 19:22:41 +0800
commite2776414401af0bc02beb305b0d366fe3828cffd (patch)
tree46aecfbe9531f15717626b2b4ec8d2a39e5603f2 /infra
parent40083638202cbedea0728ce0ebe49472212aad9f (diff)
✨ feat(deps/utable): define kv in utable.h temporary
Diffstat (limited to 'infra')
-rw-r--r--infra/kv/kv.c236
-rw-r--r--infra/module_manager/module_manager.c6
-rw-r--r--infra/module_manager/module_manager_interna.h10
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*))));