Example #1
0
static void
check_status_code (client_t *self)
{
    if (xrap_traffic_status_code (self->message) == XRAP_TRAFFIC_COMMAND_INVALID)
        engine_set_next_event (self, command_invalid_event);
    else
        engine_set_next_event (self, other_event);
}
static void
check_status_code (client_t *self)
{
    if (wap_proto_status (self->message) == WAP_PROTO_COMMAND_INVALID)
        engine_set_next_event (self, command_invalid_event);
    else
        engine_set_next_event (self, other_event);
}
Example #3
0
static void
send_response (client_t *self)
{
    if (self->rc == 0)
        engine_set_next_event (self, ok_event);
    else
        engine_set_next_event (self, fail_event);
    self->rc = 0;
}
Example #4
0
static void
open_pipe_reader (client_t *self)
{
    assert (self->pipe);
    if (pipe_attach_local_reader (self->pipe, self) == 0) {
        zsys_info ("open local reader");
        engine_set_next_event (self, ok_event);
    }
    else
        engine_set_next_event (self, error_event);
}
Example #5
0
static void
get_next_tuple (client_t *self)
{
    tuple_t *tuple = (tuple_t *) zhashx_next (self->server->tuples);
    if (tuple) {
        zgossip_msg_set_key (self->message, tuple->key);
        zgossip_msg_set_value (self->message, tuple->value);
        engine_set_next_event (self, ok_event);
    }
    else
        engine_set_next_event (self, finished_event);
}
Example #6
0
static void
s_replay_execute (client_t *self, replay_t *replay)
{
    if (replay) {
        if (streq (replay->name, "XRAP OFFER")) {
            engine_set_next_event (self, set_handler_event);
            xrap_traffic_set_method (self->message, replay->method);
            xrap_traffic_set_route (self->message, replay->route);
        }
    }
    else
        engine_set_next_event (self, replay_ready_event);
}
Example #7
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 #8
0
static void
check_for_mailbox_messages (client_t *self)
{
    if (*self->address) {
        zsock_send (self->server->mailbox, "ss", "QUERY", self->address);
        //  TODO: break into async reply back to server with client
        //  ID number that server can route to correct client, if it
        //  exists... we need some kind of internal async messaging
        //  to cover all different cases
        //  - engine_send_event (client, event, args)
        //  - stream return
        //  - mailbox to client
        //  - service request to client
        //  -> can each client have a DEALER socket?
        //  -> lookup/route on client unique name?
        //  -> server/client path? centralized for process?
        //  -> do we need lookup, or can we use ROUTER sockets?
        //  -> perhaps using ID?
        //  <<general model for internal messaging>>
        //  requirements, route by name, detect lost route?
        //  credit based flow control
        //  can send mlm_msg_t's all over the place
        zsock_recv (self->server->mailbox, "p", &self->msg);
        if (self->msg)
            engine_set_next_event (self, mailbox_message_event);
    }
}
Example #9
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 #10
0
static void
handle_connect_error (client_t *self)
{
    engine_set_next_event(self, destructor_event);
}