EX_data系列函数使用uthash替代MESA_htable,实现哈希表的动态伸缩。

This commit is contained in:
zhengchao
2020-06-28 22:10:33 +08:00
parent f112c16d2c
commit 207f99714e
6 changed files with 148 additions and 153 deletions

View File

@@ -1,45 +1,26 @@
#include "dynamic_array.h"
#include "Maat_rule.h"
#include <MESA/MESA_htable.h>
#include <sys/queue.h>
struct EX_data_rt;
struct EX_data_rt
{
dynamic_array_t *cache_rows;
long long cache_row_num;
long long cache_size;
MESA_htable_handle key2ex_hash;
const struct EX_data_schema* ex_schema;
int table_id;
void (* user_data_free)(void *user_data);
};
struct EX_data_container
{
MAAT_RULE_EX_DATA ex_data;
const struct EX_data_rt* rt;
void* user_data;
TAILQ_ENTRY(EX_data_container) entries;
};
TAILQ_HEAD(EX_data_container_q, EX_data_container);
struct EX_data_rt* EX_data_rt_new(int table_id, long long estimate_size, Maat_plugin_EX_key2index_func_t * key2index, void (* user_data_free)(void *user_data));
void EX_data_rt_free(struct EX_data_rt* p);
void EX_data_rt_set_schema(struct EX_data_rt* p, const struct EX_data_schema* schema);
void EX_data_rt_cache_row(struct EX_data_rt* p, const char* row);
void EX_data_rt_cache_row_put(struct EX_data_rt* p, const char* row);
const char* EX_data_rt_get_cached_row(struct EX_data_rt* p, int i);
const char* EX_data_rt_cached_row_get(struct EX_data_rt* p, size_t index);
void EX_data_rt_clear_row_cache(struct EX_data_rt* p);
int EX_data_rt_get_row_num(struct EX_data_rt* p);
size_t EX_data_rt_get_cached_row_num(struct EX_data_rt* p);
struct EX_data_container* EX_data_rt_row2EX_data(struct EX_data_rt* ex_rt,
int EX_data_rt_row2EX_data(struct EX_data_rt* ex_rt,
const char* row, const char* key, size_t key_len,
void* user_data, void* logger);
int EX_data_rt_delete_by_row(struct EX_data_rt* ex_rt, const char* row, const char* key, size_t key_len, void *logger);
MAAT_RULE_EX_DATA EX_data_rt_get_EX_data_by_key(struct EX_data_rt* ex_rt, const char* key, size_t key_len);
MAAT_RULE_EX_DATA EX_data_rt_get_EX_data_by_container(struct EX_data_rt* ex_rt, struct EX_data_container* container);
size_t EX_data_rt_list_all(struct EX_data_rt* ex_rt, EX_data_container_q* listed);
size_t EX_data_rt_list_all_ex_container(struct EX_data_rt* ex_rt, struct EX_data_container*** ex_container_array);
void* EX_data_container_get_user_data(struct EX_data_container* ex_container);

View File

@@ -64,8 +64,8 @@ struct Maat_table_runtime_manager;
struct Maat_table_runtime_manager* Maat_table_runtime_manager_create(struct Maat_table_manager* table_manager, int max_thread_num);
void Maat_table_rt_manager_destroy(struct Maat_table_runtime_manager* table_rt_mgr);
struct Maat_table_runtime* Maat_table_runtime_get(struct Maat_table_runtime_manager* table_rt_mgr, int table_id);
long long Maat_table_runtime_plugin_cached_line_count(struct Maat_table_runtime* table_rt);
const char* Maat_table_runtime_plugin_get_cached_line(struct Maat_table_runtime* table_rt, long long Nth_line);
size_t Maat_table_runtime_plugin_cached_row_count(struct Maat_table_runtime* table_rt);
const char* Maat_table_runtime_plugin_get_cached_row(struct Maat_table_runtime* table_rt, size_t Nth_row);
int Maat_table_runtime_plugin_commit_ex_schema(struct Maat_table_runtime* table_rt, struct Maat_table_schema* table_desc, void* logger);
MAAT_PLUGIN_EX_DATA Maat_table_runtime_plugin_get_ex_data(struct Maat_table_runtime* table_rt, struct Maat_table_schema* table_desc, const char* key);