static VALUE rb_loop_add_idle (int argc, VALUE *argv, VALUE self) { VALUE rb_priority, rb_options, rb_block; MilterEventLoop *event_loop; CallbackContext *context; gint priority = G_PRIORITY_DEFAULT_IDLE; guint tag; rb_scan_args(argc, argv, "01&", &rb_options, &rb_block); rb_milter__scan_options(rb_options, "priority", &rb_priority, NULL); if (!NIL_P(rb_priority)) priority = NUM2INT(rb_priority); if (NIL_P(rb_block)) rb_raise(rb_eArgError, "idle block is missing"); event_loop = SELF(self); context = callback_context_new(event_loop, rb_block); tag = milter_event_loop_add_idle_full(event_loop, priority, cb_idle, context, cb_callback_context_notify); return UINT2NUM(tag); }
static void setup_client (void) { GError *error = NULL; milter_client_set_connection_spec(client, spec, &error); gcut_assert_error(error); idle_shutdown_id = milter_event_loop_add_idle_full(loop, G_PRIORITY_LOW, cb_idle_shutdown, NULL, NULL); }
static void reload_configuration_request (int signum) { if (the_manager) { MilterEventLoop *loop; loop = milter_client_get_event_loop(MILTER_CLIENT(the_manager)); milter_event_loop_add_idle_full(loop, G_PRIORITY_DEFAULT, cb_idle_reload_configuration, NULL, NULL); } }
void test_remove_pid_file_on_exit (void) { gboolean pid_file_exist = FALSE; cut_trace(setup_client()); milter_client_set_pid_file(client, pid_file_path()); milter_event_loop_add_idle_full(loop, G_PRIORITY_HIGH, cb_idle_check_pid_file_existence, &pid_file_exist, NULL); cut_assert_true(milter_client_run(client, &actual_error)); gcut_assert_error(actual_error); cut_assert_true(pid_file_exist); cut_assert_false(g_file_test(pid_file_path(), G_FILE_TEST_EXISTS)); }