This is fstrm, a C implementation of the Frame Streams data transport
protocol.

Frame Streams is a light weight, binary clean protocol that allows
for the transport of arbitrarily encoded data payload sequences
with minimal framing overhead -- just four bytes per data frame.
Frame Streams does not specify an encoding format for data frames
and can be used with any data serialization format that produces
byte sequences, such as Protocol Buffers, XML, JSON, MessagePack,
YAML, etc. Frame Streams can be used as both a streaming transport
over a reliable byte stream socket (TCP sockets, TLS connections,
AF_UNIX sockets, etc.) for data in motion as well as a file format
for data at rest. A "Content Type" header identifies the type of
payload being carried over an individual Frame Stream and allows
cooperating programs to determine how to interpret a given sequence
of data payloads.

fstrm is an optimized C implementation of Frame Streams that includes
a fast, lockless circular queue implementation and exposes library
interfaces for setting up a dedicated Frame Streams I/O thread and
asynchronously submitting data frames for transport from worker
threads. It was originally written to facilitate the addition of
high speed binary logging to DNS servers written in C using the
dnstap log format.

Homepage:
https://github.com/farsightsec/fstrm/
