Skip to content

Roles

A role is one capability the library needs filled, defined as a vtable in SolidSyslog<Role>Definition.h. A platform adapter, a Core implementation, or your own code fills it. Every role has a Null fallback, so an unfilled slot degrades safely instead of dangling at link time.

There are twelve. Each page below is that role's contract — the vtable itself, and a generated diagram of the backends that realise it.

Networking

Role Does
Resolver turn a host and port into an address
Datagram send one UDP payload
Stream carry bytes over a connection — plain TCP, or TLS layered over it
Sender frame a record and deliver it

Storage

Role Does
Buffer hold records between Log and Service
Store store and forward across an outage
BlockDevice block-indexed storage beneath a Store
File the file primitive beneath a BlockDevice

OS primitives

Role Does
Mutex guard a Buffer shared across tasks
AtomicCounter the RFC 5424 sequenceId source

Evidence and integrity

Role Does
StructuredData emit one RFC 5424 SD element
SecurityPolicy seal and open stored records

Bring your own

Filling a role is implementing its vtable. Porting puts the twelve contracts side by side, each with its Null fallback and a reference implementation.

Which platform fills a role on your target is the platform × capability matrix.

Or let us fill it.

Nothing shipped backs the role you need? We write the platform adapter for you — and the tests that prove it against the contract. Talk to us about it.