msgpack-c icon indicating copy to clipboard operation
msgpack-c copied to clipboard

knowing end of message in protocol

Open Lukkyz opened this issue 2 years ago • 1 comments

How do you manage end of a message in a protocol ? I use msgpack-c and the only solution I found is to send the header before the payload (separately).

Send the header to client :

// header
{
  "message_type": "hello",
  "payload_size": 10
}

The client received the header, unpack it, and allocate a buffer of "payload_size", receive data from stream, and if the buffer is complete the message is finish.

I want to send header and body succinctly

{
  "header": { "message_type":"hello", "payload_size": 10},
  "payload": {...} // can come in multiple frame
}

My problem is that I don't know if it's possible to partially unpack the header for knowing the size before receiving the full message (splitted if > 4096kb due to libevent restriction)

How would you do that ? I am open to all solutions.

Lukkyz avatar Jun 02 '22 16:06 Lukkyz

I posted my answer to https://stackoverflow.com/questions/72469007/knowing-end-of-message-in-protocol-with-msgpack/72483972#72483972

redboltz avatar Jun 05 '22 09:06 redboltz