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); }
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); }