zmsg_t * zgossip_msg_encode_invalid ( ) { zgossip_msg_t *self = zgossip_msg_new (ZGOSSIP_MSG_INVALID); return zgossip_msg_encode (&self); }
zmsg_t * zgossip_msg_encode_pong ( ) { zgossip_msg_t *self = zgossip_msg_new (ZGOSSIP_MSG_PONG); return zgossip_msg_encode (&self); }
zmsg_t * zgossip_msg_encode_hello ( ) { zgossip_msg_t *self = zgossip_msg_new (ZGOSSIP_MSG_HELLO); return zgossip_msg_encode (&self); }
int zgossip_msg_send (zgossip_msg_t **self_p, void *output) { assert (self_p); assert (*self_p); assert (output); // Save routing_id if any, as encode will destroy it zgossip_msg_t *self = *self_p; zframe_t *routing_id = self->routing_id; self->routing_id = NULL; // Encode zgossip_msg message to a single zmsg zmsg_t *msg = zgossip_msg_encode (&self); // If we're sending to a ROUTER, send the routing_id first if (zsocket_type (zsock_resolve (output)) == ZMQ_ROUTER) { assert (routing_id); zmsg_prepend (msg, &routing_id); } else zframe_destroy (&routing_id); if (msg && zmsg_send (&msg, output) == 0) return 0; else return -1; // Failed to encode, or send }
zmsg_t * zgossip_msg_encode_publish ( const char *key, const char *value) { zgossip_msg_t *self = zgossip_msg_new (ZGOSSIP_MSG_PUBLISH); zgossip_msg_set_key (self, key); zgossip_msg_set_value (self, value); return zgossip_msg_encode (&self); }
zmsg_t * zgossip_msg_encode_announce ( const char *endpoint, const char *service) { zgossip_msg_t *self = zgossip_msg_new (ZGOSSIP_MSG_ANNOUNCE); zgossip_msg_set_endpoint (self, endpoint); zgossip_msg_set_service (self, service); return zgossip_msg_encode (&self); }