修改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.
|
* 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)));
|
int ret = MESA_htable_set_opt(table, opt_type, &value, (int)(sizeof(value)));
|
||||||
assert(ret == 0);
|
assert(ret == 0);
|
||||||
return ret;
|
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)
|
static MESA_htable_handle create_hash_table(unsigned int slot_size, unsigned int expire_seconds)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
unsigned max_num = slot_size * 4;
|
unsigned max_num = slot_size * 4;
|
||||||
MESA_htable_handle htable = MESA_htable_born();
|
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_int(htable, MHO_SCREEN_PRINT_CTRL, 0);
|
||||||
ret = __wrapper_MESA_htable_set_opt(htable, MHO_THREAD_SAFE, 1);
|
ret = __wrapper_MESA_htable_set_opt_int(htable, MHO_THREAD_SAFE, 1);
|
||||||
ret = __wrapper_MESA_htable_set_opt(htable, MHO_MUTEX_NUM, 16);
|
ret = __wrapper_MESA_htable_set_opt_int(htable, MHO_MUTEX_NUM, 16);
|
||||||
ret = __wrapper_MESA_htable_set_opt(htable, MHO_HASH_SLOT_SIZE, slot_size);
|
ret = __wrapper_MESA_htable_set_opt_int(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_int(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_int(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_ELIMIMINATE_TYPE,
|
||||||
HASH_ELIMINATE_ALGO_FIFO);
|
HASH_ELIMINATE_ALGO_FIFO);
|
||||||
//TODO: how to do overide?
|
ret = __wrapper_MESA_htable_set_opt_func(htable, MHO_CBFUN_DATA_FREE,
|
||||||
//ret = __wrapper_MESA_htable_set_opt(htable, MHO_CBFUN_DATA_FREE,
|
(void *)key_keeper_free_serialized, sizeof(&key_keeper_free_serialized));
|
||||||
// (void *)key_keeper_free_serialized);
|
|
||||||
//ret = __wrapper_MESA_htable_set_opt(htable, MHO_CBFUN_DATA_EXPIRE_NOTIFY,
|
//ret = __wrapper_MESA_htable_set_opt(htable, MHO_CBFUN_DATA_EXPIRE_NOTIFY,
|
||||||
// (void *)key_keeper_verify_cb);
|
// (void *)key_keeper_verify_cb);
|
||||||
ret = MESA_htable_mature(htable);
|
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);
|
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()
|
int main()
|
||||||
{
|
{
|
||||||
void* logger = NULL;
|
void* logger = NULL;
|
||||||
future_promise_library_init();
|
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 key_keeper * keeper = key_keeper_init("./conf/tfe.conf", "key_keeper", logger);
|
||||||
struct promise* user = NULL;
|
struct key_keeper_ctx* ctx = ALLOC(struct key_keeper_ctx, 1);
|
||||||
struct future* f = future_create("key_keeper", ask_key_keeper_on_succ, ask_key_keeper_on_fail, user);
|
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");
|
X509* origin_cert = ssl_x509_load("./conf/origin_cert.pem");
|
||||||
printf("-------------------------------\n");
|
printf("-------------------------------\n");
|
||||||
int i = 0;
|
int i = 0;
|
||||||
printf("call key_keeper_async_ask, i = %d\n", i);
|
printf("call key_keeper_async_ask, i = %d\n", i);
|
||||||
key_keeper_async_ask(f, keeper, "www.baidu.com", 1, origin_cert, 1, evbase);
|
key_keeper_async_ask(f, keeper, "www.baidu.com", 1, origin_cert, 1, NULL);
|
||||||
event_base_dispatch(evbase);
|
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 event_base* evbase1 = event_base_new();
|
||||||
struct future* f1 = future_create("key_keeper", ask_key_keeper_on_succ, ask_key_keeper_on_fail, user);
|
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");
|
printf("chain is not null\n");
|
||||||
}
|
}
|
||||||
|
key_keeper_free_keyring(kyr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user