Home

Awesome

packet-stream-buffers

A tight binary codec for packet-streams (the internal component to muxrpc)

This allows streams of binary data, and also supports json objects. (although, you can't send a buffer inside a json object, but so far we have not done this in secure-scuttlebutt, so performance is more important)

The protocol sends zero or more header:body pairs, then a final header that is all zeros.

(
  [flags (1byte), length (4 bytes, UInt32BE), req (4 bytes, Int32BE)]
  [body (length bytes)]
) *
[zeros (9 bytes)]

flags indicates the encoding type of the body, and whether it's part of a stream, or an error/end value.

flags is just one byte.

[ignored (4 bits), stream (1 bit), end/err (1 bit), type (2 bits)]
type = {0 => Buffer, 1 => String, 2 => JSON}

License

MIT