コード例 #1
0
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);
}
コード例 #2
0
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);
}
コード例 #3
0
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);
    }
}
コード例 #4
0
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));
}