CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
logforward.h
Go to the documentation of this file.
1#pragma once
4
78
79#include <cx/log/log.h>
80#include <cx/log/logwire.h>
81
82CX_C_BEGIN
83
86
91typedef struct LogForwardHandlers {
101 bool (*send)(_In_opt_ void* ctx, _In_reads_bytes_(len) const uint8* buf, size_t len);
102
106 void (*close)(_In_opt_ void* ctx);
108
110#define LOG_FORWARD_SPOOL_DEFAULT (4 * 1024 * 1024)
111
116#define LOG_FORWARD_SEGMENT_DEFAULT (256 * 1024)
117
119#define LOG_FORWARD_MAXHOPS_DEFAULT 4
120
128
130typedef struct LogForwardStats {
131 uint64 sent;
132 uint64 spooled;
133 uint64 dropped;
134 uint64 looped;
135 uint64 failed;
136 uint64 pending;
139
161_Ret_opt_valid_ LogForwarder* logforwardRegister(int maxlevel, _In_opt_ strref chanfilter,
162 _In_ const LogForwardHandlers* handlers,
163 _In_opt_ void* ctx,
164 _In_opt_ const LogForwardConfig* config);
165
177_Ret_valid_ LogDest* logForwardDest(_In_ LogForwarder* fwd);
178
185void logforwardUnregister(_Pre_valid_ _Post_invalid_ LogForwarder* fwd);
186
194
202
210
227bool logForwardTake(_In_ LogForwarder* fwd, _Inout_ Buffer* out);
228
247bool logForwardRecv(_In_ LogForwarder* fwd, _In_reads_bytes_(len) const uint8* buf, size_t len);
248
264bool logForwardApplySub(_In_ LogForwarder* fwd, _In_opt_ const LogSubSpec* spec);
265
283bool logForwardCatalog(_In_ LogForwarder* fwd, _Inout_ Buffer* out);
284
289void logForwardStats(_In_ LogForwarder* fwd, _Out_ LogForwardStats* out);
290
292
293CX_C_END
struct LogDest LogDest
Opaque handle to a registered log destination.
Definition log.h:187
void logforwardUnregister(LogForwarder *fwd)
bool logForwardApplySub(LogForwarder *fwd, const LogSubSpec *spec)
LogDest * logForwardDest(LogForwarder *fwd)
void logForwardDisconnected(LogForwarder *fwd)
void logForwardConnected(LogForwarder *fwd)
void logForwardStats(LogForwarder *fwd, LogForwardStats *out)
struct LogForwarder LogForwarder
Opaque handle to a registered forwarder.
Definition logforward.h:85
LogForwarder * logforwardRegister(int maxlevel, strref chanfilter, const LogForwardHandlers *handlers, void *ctx, const LogForwardConfig *config)
void logForwardResume(LogForwarder *fwd)
bool logForwardRecv(LogForwarder *fwd, const uint8 *buf, size_t len)
bool logForwardTake(LogForwarder *fwd, Buffer *out)
bool logForwardCatalog(LogForwarder *fwd, Buffer *out)
Core logging system API.
Wire codec for log records: records in, framed bytes out, and back again.
Optional forwarder settings; zero in any field takes the default.
Definition logforward.h:122
uint64 segbytes
Bytes per spool segment.
Definition logforward.h:125
strref origin
This instance's identity on the wire.
Definition logforward.h:123
uint64 spoolbytes
Spooled bytes held before the oldest are dropped.
Definition logforward.h:124
uint32 maxhops
Refuse a record that has already travelled this far.
Definition logforward.h:126
void(* close)(void *ctx)
Definition logforward.h:106
bool(* send)(void *ctx, const uint8 *buf, size_t len)
Definition logforward.h:101
What a forwarder has done so far.
Definition logforward.h:130
bool subscribed
A receiver has asked for something and has not been unsubscribed.
Definition logforward.h:137
uint64 failed
Records that could not be encoded.
Definition logforward.h:135
uint64 dropped
Records the spool evicted to stay within its bound.
Definition logforward.h:133
uint64 sent
Records handed to the transport.
Definition logforward.h:131
uint64 pending
Bytes currently spooled.
Definition logforward.h:136
uint64 looped
Records refused because forwarding them would close a loop.
Definition logforward.h:134
uint64 spooled
Records held because the transport was not taking any.
Definition logforward.h:132