Skip to content
«interface»SolidSyslogStoreBlockStoreCore«interface»SolidSyslogBlockDevice«interface»SolidSyslogSecurityPolicy0..1

File SolidSyslogBlockStore.h

FileList > Core > Interface > SolidSyslogBlockStore.h

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

Classes

Type Name
struct SolidSyslogBlockStoreConfig
Wiring for SolidSyslogBlockStore_Create.

Detailed Description

A store-and-forward Store backed by a BlockDevice: records are appended to the current write block, and once a block fills the write rolls to the next, giving durable retention across a restart.

Create resumes from whatever records are already on the device (scanning the read block, honouring any per-record integrity trailer from the injected SecurityPolicy) so a reboot keeps unsent records queued.

MaxBlocks caps retention; DiscardPolicy governs the overflow once every block is full - Oldest evicts the oldest block to keep accepting writes, Newest refuses the incoming record, Halt refuses it, latches (IsHalted stops Service), and fires OnStoreFull once. An optional capacity-threshold function (queried each Write) drives an edge-triggered OnThresholdCrossed callback for early back-pressure signalling. Mind the recursion gotcha: under a PassthroughBuffer, SolidSyslog_Log sends inline, so logging from the threshold callback re-enters Write - drive the logger from a returning Buffer or gate the Log instead.

Internally each pool slot composes an inner RecordStore over a BlockSequence, both drawn from sibling pools; a block too small for one worst-case record is grown to fit and reported as a WARNING rather than failing Create.

Public Types Documentation

SolidSyslogDiscardPolicy

What happens once MaxBlocks are full.

enum SolidSyslogDiscardPolicy {
    SOLIDSYSLOG_DISCARD_POLICY_OLDEST,
    SOLIDSYSLOG_DISCARD_POLICY_NEWEST,
    SOLIDSYSLOG_DISCARD_POLICY_HALT
};

Oldest keeps accepting writes, evicting the oldest block to make room; Newest refuses the incoming record; Halt refuses it, latches (IsHalted, Service stops), and fires OnStoreFull once on entry.


SolidSyslogStoreFullCallback

Fired once when a Halt-policy store first fills.

typedef void(* SolidSyslogStoreFullCallback) (void *context);


SolidSyslogStoreThresholdCallback

Edge-triggered: fires once when used-bytes rises from below the threshold to at-or-above (re-armed when it drops back below).

typedef void(* SolidSyslogStoreThresholdCallback) (void *context);

Gotcha under SolidSyslogPassthroughBuffer, where SolidSyslog_Log sends inline: logging from this callback recurses into the store's Write. Gate the Log, or drive the logger from a Buffer that returns rather than sending inline.


SolidSyslogStoreThresholdFunction

Returns the capacity threshold in bytes; 0 disables.

typedef size_t(* SolidSyslogStoreThresholdFunction) (void *context);

Queried on every Write.


Public Functions Documentation

SolidSyslogBlockStore_Create

Create a store from config , resuming from any records already on the device.

struct SolidSyslogStore * SolidSyslogBlockStore_Create (
    const struct SolidSyslogBlockStoreConfig * config
) 

A NULL config, an exhausted pool, or a failed inner allocation falls back to the shared NullStore. A block too small for one worst-case record is grown to fit and reported as a WARNING, not a failure.


SolidSyslogBlockStore_Destroy

Release the pool slot; does not destroy the injected BlockDevice or SecurityPolicy.

void SolidSyslogBlockStore_Destroy (
    struct SolidSyslogStore * base
) 



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