I was reading the Paranoid Pirate Protocol when I saw that it expects the ready and heartbeat commands to be sent as single bytes. So I decided to add a couple of methods in my class to explicitly manage this case. It is not a strict necessity, but they surely make the code more readable.
Here are the two new methods:
bool send(uint8_t value, int flags =0) // 1 { zmq::message_t msg(sizeof(uint8_t)); memcpy(msg.data(), &value, sizeof(uint8_t)); return socket_t::send(msg, flags); } uint8_t recvAsByte(int flags =0) { zmq::message_t message; if(!socket_t::recv(&message, flags)) throw error_t(); return *(static_cast<uint8_t*>(message.data())); }uint8_t is defined in stdint.h as unsigned char, assuming in your environment byte has 8 bits, as almost everywhere happens. Using this typedef should make clearer that we are interested in a tiny number and not in a character.
I have pushed on github the new file version.
No comments:
Post a Comment