Skip to content

File SolidSyslogDatagram.h

File List > Core > Interface > SolidSyslogDatagram.h

Go to the documentation of this file

#ifndef SOLIDSYSLOGDATAGRAM_H
#define SOLIDSYSLOGDATAGRAM_H

#include <stdbool.h>
#include <stddef.h>

#include "ExternC.h"

struct SolidSyslogAddress;

EXTERN_C_BEGIN

    struct SolidSyslogDatagram;

    /* Distinct outcomes of SendTo. Oversize is reserved for the EMSGSIZE
     * recovery path (S12.12) — implementations that cannot detect oversize
     * collapse it into Failed. */
    enum SolidSyslogDatagramSendResult
    {
        SOLIDSYSLOG_DATAGRAM_SEND_RESULT_SENT, 
        SOLIDSYSLOG_DATAGRAM_SEND_RESULT_OVERSIZE, 
        SOLIDSYSLOG_DATAGRAM_SEND_RESULT_FAILED 
    };

    bool SolidSyslogDatagram_Open(struct SolidSyslogDatagram * datagram);

    enum SolidSyslogDatagramSendResult SolidSyslogDatagram_SendTo(
        struct SolidSyslogDatagram * datagram,
        const void* buffer,
        size_t size,
        const struct SolidSyslogAddress* addr
    );

    size_t SolidSyslogDatagram_MaxPayload(struct SolidSyslogDatagram * datagram);

    void SolidSyslogDatagram_Close(struct SolidSyslogDatagram * datagram);

EXTERN_C_END

#endif /* SOLIDSYSLOGDATAGRAM_H */