forked from cory/tildefriends
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:
@ -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)
|
||||
|
Reference in New Issue
Block a user