Example #1
0
static void
allow_time_to_settle (client_t *self)
{
    //  We are still using hard pointers rather than cycled client IDs, so
    //  there may be messages pending from a stream which refer to our client.
    //  Stupid strategy for now is to give the client thread a while to process
    //  these, before killing it.
    engine_set_wakeup_event (self, 1000, settled_event);
}
Example #2
0
static void
process_write_request (client_t *self)
{
    if (self->pipe == NULL)
        engine_set_next_event (self, pipe_shut_event);
    else
    if (pipe_accepts_data (self->pipe))
        engine_set_next_event (self, have_reader_event);
    else
    if (zpipes_msg_timeout (self->request))
        engine_set_wakeup_event (self,
            zpipes_msg_timeout (self->request), wakeup_event);
    //
    //  or else wait until a reader arrives
}
Example #3
0
static void
process_read_request (client_t *self)
{
    if (zpipes_msg_size (self->request) == 0)
        engine_set_next_event (self, zero_read_event);
    else
    if (zlist_size (self->queue))
        engine_set_next_event (self, have_data_event);
    else
    if (!self->pipe)
        //  Read on closed pipe returns READ END
        engine_set_next_event (self, pipe_shut_event);
    else
    if (zpipes_msg_timeout (self->request))
        engine_set_wakeup_event (
            self, zpipes_msg_timeout (self->request), wakeup_event);
    //
    //  or else wait until a writer has data for us
}
Example #4
0
static void
handle_set_wakeup (client_t *self)
{
    engine_set_wakeup_event(self, HEARTBEAT_DELAY, send_heartbeat_event);
}