Skip to content

boarfish55/libmdr

Repository files navigation

OVERVIEW

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.

DISCLAIMER

Use at your own risk. This has not been tested in production.

INSTALLATION & USAGE

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).

KNOWN ISSUES

  • 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.

TODO

  • Documentation, lots of it

About

Minimal Data Serialization, and more.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors