25 lines
1.3 KiB
Text
25 lines
1.3 KiB
Text
|
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.
|