修改hash表超时淘汰释放函数
This commit is contained in:
@@ -438,29 +438,42 @@ static void certstore_rpc_on_fail(enum e_future_error err, const char * what, vo
|
||||
/*
|
||||
* Certificate, including private key and keyring chain.
|
||||
*/
|
||||
static int __wrapper_MESA_htable_set_opt(MESA_htable_handle table, enum MESA_htable_opt opt_type, unsigned int value)
|
||||
static int __wrapper_MESA_htable_set_opt_int(MESA_htable_handle table, enum MESA_htable_opt opt_type, unsigned int value)
|
||||
{
|
||||
int ret = MESA_htable_set_opt(table, opt_type, &value, (int)(sizeof(value)));
|
||||
assert(ret == 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __wrapper_MESA_htable_set_opt_func(MESA_htable_handle table, enum MESA_htable_opt opt_type, void * val, size_t len)
|
||||
{
|
||||
int ret = MESA_htable_set_opt(table, opt_type, val, (int)len);
|
||||
assert(ret == 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void key_keeper_free_serialized(void* data)
|
||||
{
|
||||
printf("call key_keeper_free_serialized\n");
|
||||
struct keyring_private* kyr = (struct keyring_private*)data;
|
||||
key_keeper_free_keyring(&(kyr->head));
|
||||
}
|
||||
|
||||
static MESA_htable_handle create_hash_table(unsigned int slot_size, unsigned int expire_seconds)
|
||||
{
|
||||
int ret = 0;
|
||||
unsigned max_num = slot_size * 4;
|
||||
MESA_htable_handle htable = MESA_htable_born();
|
||||
ret = __wrapper_MESA_htable_set_opt(htable, MHO_SCREEN_PRINT_CTRL, 0);
|
||||
ret = __wrapper_MESA_htable_set_opt(htable, MHO_THREAD_SAFE, 1);
|
||||
ret = __wrapper_MESA_htable_set_opt(htable, MHO_MUTEX_NUM, 16);
|
||||
ret = __wrapper_MESA_htable_set_opt(htable, MHO_HASH_SLOT_SIZE, slot_size);
|
||||
ret = __wrapper_MESA_htable_set_opt(htable, MHO_HASH_MAX_ELEMENT_NUM, max_num);
|
||||
ret = __wrapper_MESA_htable_set_opt(htable, MHO_EXPIRE_TIME, expire_seconds);
|
||||
ret = __wrapper_MESA_htable_set_opt(htable, MHO_ELIMIMINATE_TYPE,
|
||||
ret = __wrapper_MESA_htable_set_opt_int(htable, MHO_SCREEN_PRINT_CTRL, 0);
|
||||
ret = __wrapper_MESA_htable_set_opt_int(htable, MHO_THREAD_SAFE, 1);
|
||||
ret = __wrapper_MESA_htable_set_opt_int(htable, MHO_MUTEX_NUM, 16);
|
||||
ret = __wrapper_MESA_htable_set_opt_int(htable, MHO_HASH_SLOT_SIZE, slot_size);
|
||||
ret = __wrapper_MESA_htable_set_opt_int(htable, MHO_HASH_MAX_ELEMENT_NUM, max_num);
|
||||
ret = __wrapper_MESA_htable_set_opt_int(htable, MHO_EXPIRE_TIME, expire_seconds);
|
||||
ret = __wrapper_MESA_htable_set_opt_int(htable, MHO_ELIMIMINATE_TYPE,
|
||||
HASH_ELIMINATE_ALGO_FIFO);
|
||||
//TODO: how to do overide?
|
||||
//ret = __wrapper_MESA_htable_set_opt(htable, MHO_CBFUN_DATA_FREE,
|
||||
// (void *)key_keeper_free_serialized);
|
||||
ret = __wrapper_MESA_htable_set_opt_func(htable, MHO_CBFUN_DATA_FREE,
|
||||
(void *)key_keeper_free_serialized, sizeof(&key_keeper_free_serialized));
|
||||
//ret = __wrapper_MESA_htable_set_opt(htable, MHO_CBFUN_DATA_EXPIRE_NOTIFY,
|
||||
// (void *)key_keeper_verify_cb);
|
||||
ret = MESA_htable_mature(htable);
|
||||
|
||||
@@ -8,21 +8,31 @@ void ask_key_keeper_on_succ(void* result, void* user);
|
||||
|
||||
void ask_key_keeper_on_fail(enum e_future_error error, const char * what, void * user);
|
||||
|
||||
struct key_keeper_ctx{
|
||||
struct key_keeper* keeper;
|
||||
struct future* f;
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
void* logger = NULL;
|
||||
future_promise_library_init();
|
||||
struct event_base* evbase = event_base_new();
|
||||
//struct event_base* evbase = event_base_new();
|
||||
struct key_keeper * keeper = key_keeper_init("./conf/tfe.conf", "key_keeper", logger);
|
||||
struct promise* user = NULL;
|
||||
struct future* f = future_create("key_keeper", ask_key_keeper_on_succ, ask_key_keeper_on_fail, user);
|
||||
struct key_keeper_ctx* ctx = ALLOC(struct key_keeper_ctx, 1);
|
||||
ctx->keeper = keeper;
|
||||
struct future* f = future_create("key_keeper", ask_key_keeper_on_succ, ask_key_keeper_on_fail, ctx);
|
||||
ctx->f = f;
|
||||
X509* origin_cert = ssl_x509_load("./conf/origin_cert.pem");
|
||||
printf("-------------------------------\n");
|
||||
int i = 0;
|
||||
printf("call key_keeper_async_ask, i = %d\n", i);
|
||||
key_keeper_async_ask(f, keeper, "www.baidu.com", 1, origin_cert, 1, evbase);
|
||||
event_base_dispatch(evbase);
|
||||
|
||||
key_keeper_async_ask(f, keeper, "www.baidu.com", 1, origin_cert, 1, NULL);
|
||||
X509_free(origin_cert);
|
||||
key_keeper_destroy(keeper);
|
||||
future_destroy(f);
|
||||
free(ctx);
|
||||
//event_base_dispatch(evbase);
|
||||
/*
|
||||
struct event_base* evbase1 = event_base_new();
|
||||
struct future* f1 = future_create("key_keeper", ask_key_keeper_on_succ, ask_key_keeper_on_fail, user);
|
||||
@@ -50,6 +60,7 @@ void ask_key_keeper_on_succ(void* result, void* user)
|
||||
{
|
||||
printf("chain is not null\n");
|
||||
}
|
||||
key_keeper_free_keyring(kyr);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user