Skip to content
built fromSolidSyslogCore«struct»SolidSyslogConfig«interface»SolidSyslogBuffer«interface»SolidSyslogSender«interface»SolidSyslogStore«interface»SolidSyslogStructuredData0..*

File SolidSyslog.h

FileList > Core > Interface > SolidSyslog.h

The application logging API: SolidSyslog_Log / SolidSyslog_LogWithSd to emit an event, SolidSyslog_Service to drive delivery, and the SolidSyslogMessage struct.

  • #include "SolidSyslogExternC.h"
  • #include "SolidSyslogPrival.h"
  • #include "SolidSyslogServiceStatus.h"
  • #include <stddef.h>

Classes

Type Name
struct SolidSyslogMessage
One event to log.

Public Functions Documentation

SolidSyslog_Log

Format message and hand it to the configured Buffer.

void SolidSyslog_Log (
    struct SolidSyslog * handle,
    const struct SolidSyslogMessage * message
) 

Whether this blocks depends on that Buffer: a PassthroughBuffer sends inline; a CircularBuffer enqueues and returns, leaving delivery to SolidSyslog_Service. Concurrent calls are safe only if the configured Buffer is thread-safe (e.g. a CircularBuffer with a real Mutex). A NULL handle or message is reported via SolidSyslog_Error and otherwise ignored.


SolidSyslog_LogWithSd

As SolidSyslog_Log, but also attaches sd [0..sdCount) as caller-built SD-ELEMENTs to this one message, emitted after the per-instance SDs registered at Create.

void SolidSyslog_LogWithSd (
    struct SolidSyslog * handle,
    const struct SolidSyslogMessage * message,
    struct SolidSyslogStructuredData ** sd,
    size_t sdCount
) 

The SD objects need only live for the duration of the call. (SolidSyslog_Log is this with sd = NULL, sdCount = 0.)


SolidSyslog_Service

Run one servicing pass (drain the buffer into the store, then attempt one send from the store) and return an advisory hint for driving an event-driven loop.

enum SolidSyslogServiceStatus SolidSyslog_Service (
    struct SolidSyslog * handle
) 

The hint is never load-bearing: each call re-derives its state from the live buffer and store, so a missed or spurious wake is safe and a fixed-delay poll loop may ignore the return. A NULL handle is reported and returns IDLE.

Return value:

  • SOLIDSYSLOG_SERVICE_IDLE Nothing to do anywhere; wait for the next Log.
  • SOLIDSYSLOG_SERVICE_READY Work moved this pass, or the store still has unsent after a send; loop again.
  • SOLIDSYSLOG_SERVICE_BLOCKED The buffer was idle and only the sender is stuck (a send was attempted and failed); back off, a Log will wake it.
  • SOLIDSYSLOG_SERVICE_HALTED The store is halted (only under SOLIDSYSLOG_DISCARD_POLICY_HALT); alarm / slow heartbeat.

Buffer drain out-ranks a send failure: a down sender never demotes the loop out of "keep draining" while the buffer still has records to move.



The documentation for this class was generated from the following file Core/Interface/SolidSyslog.h