示例#1
0
static void
s_client_process (broker_t *self, char *sender, zmsg_t *msg)
{
    assert (zmsg_parts (msg) >= 2);     //  Service name + body

    char *service_name = zmsg_pop (msg);
    service_t *service = s_service_require (self, service_name);
    //  Set reply return address to client sender
    zmsg_wrap (msg, sender, "");
    if (strlen (service_name) >= 4
    &&  memcmp (service_name, "mmi.", 4) == 0)
        s_service_internal (self, service_name, msg);
    else
        s_service_dispatch (self, service, msg);
    free (service_name);
}
示例#2
0
static void
s_client_process (broker_t *self, zframe_t *sender, zmsg_t *msg)
{
    assert (zmsg_size (msg) >= 2);     //  Service name + body

    zframe_t *service_frame = zmsg_pop (msg);
    service_t *service = s_service_require (self, service_frame);

    //  Set reply return address to client sender
    zmsg_wrap (msg, zframe_dup (sender));
    if (zframe_size (service_frame) >= 4
    &&  memcmp (zframe_data (service_frame), "mmi.", 4) == 0)
        s_service_internal (self, service_frame, msg);
    else
        s_service_dispatch (self, service, msg);
    zframe_destroy (&service_frame);
}