Skip to content

File SolidSyslogBlockStore.h

File List > Core > Interface > SolidSyslogBlockStore.h

Go to the documentation of this file

#ifndef SOLIDSYSLOGBLOCKSTORE_H
#define SOLIDSYSLOGBLOCKSTORE_H

#include <stddef.h>

#include "ExternC.h"

struct SolidSyslogStore;

EXTERN_C_BEGIN

    struct SolidSyslogBlockDevice;
    struct SolidSyslogSecurityPolicy;

    enum SolidSyslogDiscardPolicy
    {
        SOLIDSYSLOG_DISCARD_POLICY_OLDEST,
        SOLIDSYSLOG_DISCARD_POLICY_NEWEST,
        SOLIDSYSLOG_DISCARD_POLICY_HALT
    };

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

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

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

    struct SolidSyslogBlockStoreConfig
    {
        struct SolidSyslogBlockDevice* BlockDevice; 
        size_t MaxBlocks; 
        enum SolidSyslogDiscardPolicy DiscardPolicy;
        struct SolidSyslogSecurityPolicy* SecurityPolicy; 
        SolidSyslogStoreFullCallback OnStoreFull;
        void* StoreFullContext;
        SolidSyslogStoreThresholdFunction GetCapacityThreshold;
        SolidSyslogStoreThresholdCallback OnThresholdCrossed;
        void* ThresholdContext; 
    };

    struct SolidSyslogStore* SolidSyslogBlockStore_Create(const struct SolidSyslogBlockStoreConfig* config);
    void SolidSyslogBlockStore_Destroy(struct SolidSyslogStore * base);

EXTERN_C_END

#endif /* SOLIDSYSLOGBLOCKSTORE_H */