Make it so we don't have to wait ages for a timer to be able to shutdown with ^C.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4796 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2024-01-27 13:48:16 +00:00
parent 48b967f5b6
commit fa06282ff9
4 changed files with 80 additions and 23 deletions

View File

@ -1333,18 +1333,11 @@ static void _tf_ssb_rpc_delete_blobs_work(uv_work_t* work)
static void _tf_ssb_rpc_delete_blobs_after_work(uv_work_t* work, int status)
{
delete_blobs_work_t* delete = work->data;
tf_ssb_unref(delete->ssb);
tf_free(delete);
}
static void _tf_ssb_rpc_timer_on_close(uv_handle_t* handle)
static void _tf_ssb_rpc_start_delete_callback(tf_ssb_t* ssb, void* user_data)
{
tf_free(handle);
}
static void _tf_ssb_rpc_start_delete_timer(uv_timer_t* timer)
{
tf_ssb_t* ssb = timer->data;
delete_blobs_work_t* work = tf_malloc(sizeof(delete_blobs_work_t));
*work = (delete_blobs_work_t) { .work = { .data = work}, .ssb = ssb };
int r = uv_queue_work(tf_ssb_get_loop(ssb), &work->work, _tf_ssb_rpc_delete_blobs_work, _tf_ssb_rpc_delete_blobs_after_work);
@ -1353,17 +1346,12 @@ static void _tf_ssb_rpc_start_delete_timer(uv_timer_t* timer)
tf_printf("uv_queue_work: %s\n", uv_strerror(r));
tf_free(work);
}
uv_close((uv_handle_t*)timer, _tf_ssb_rpc_timer_on_close);
}
static void _tf_ssb_rpc_start_delete_blobs(tf_ssb_t* ssb, int delay_ms)
{
tf_printf("will delete more blobs in %d ms\n", delay_ms);
uv_timer_t* timer = tf_malloc(sizeof(uv_timer_t));
*timer = (uv_timer_t) { .data = ssb };
uv_timer_init(tf_ssb_get_loop(ssb), timer);
uv_timer_start(timer, _tf_ssb_rpc_start_delete_timer, delay_ms, 0);
tf_ssb_ref(ssb);
tf_ssb_schedule_work(ssb, delay_ms, _tf_ssb_rpc_start_delete_callback, NULL);
}
void tf_ssb_rpc_start_periodic(tf_ssb_t* ssb)