Minimal Data Representation (libmdr) ia a minimalistic serialization library (plus a few extra tools, see below). It's C-friendly, has no definition language and no code generation tool, using instead declarations with standard C code in a style reminiscent of readv()/writev(). There are no optional fields, instead opting to create new message definitions. It attempts to minimize data copies when unpacking, as much as possible.
The library comes with a daemon that can handle TLS termination and buffer messages before passing them to backends over stdin/stdout, similar to inetd.
It comes with a few extra tools like an indexed heap datastructure, xlog (extended logging, essentially a syslog wrapper), a TLS event library, a simple config file handler (flatconf), a fork convenience utility that can spawn other processes with reduced privileges, and more.
Author: Pascal Lalonde plalonde@overnet.ca
See the COPYING file for licensing information.
Use at your own risk. This has not been tested in production.
Dependencies / license (not including backends):
- libbsd-overlay / libbsd-ctor, if running on Linux (BSD)
- openssl, if running on Linux (Apache 2.0)
On OpenBSD, it only uses what's in the base system (LibreSSL).
- In mdrd:
- There are possible deadlock situations if the backend does not properly drain STDIN and other error conditions occur.
- We currently don't deal well with "backpressure" coming from the backends to clients, e.g. a high-volume download with a slow client.
- Documentation, lots of it