25 #ifndef LOGPROTO_SERVER_H_INCLUDED
26 #define LOGPROTO_SERVER_H_INCLUDED
45 #define LOG_PROTO_SERVER_OPTIONS_SIZE 160
49 void (*
init)(LogProtoServerOptionsStorage *
self, GlobalConfig *
cfg);
50 void (*
destroy)(LogProtoServerOptionsStorage *
self);
51 gboolean (*
validate)(LogProtoServerOptionsStorage *
self);
83 typedef struct _LogProtoServerWakeupCallback
92 const LogProtoServerOptionsStorage *
options;
106 static inline gboolean
107 log_proto_server_validate_options(LogProtoServer *
self)
109 return self->validate_options(
self);
113 log_proto_server_handshake(LogProtoServer *s, gboolean *handshake_finished, LogProtoServer **proto_replacement)
119 g_assert(*proto_replacement == NULL);
120 status = s->handshake(s, handshake_finished, proto_replacement);
121 if (*proto_replacement)
127 *handshake_finished = TRUE;
132 log_proto_server_set_options(LogProtoServer *
self,
const LogProtoServerOptionsStorage *options)
137 static inline const LogProtoServerOptionsStorage *
138 log_proto_server_get_options(LogProtoServer *
self)
140 return self->options;
144 log_proto_server_get_multi_line_options(LogProtoServer *
self)
146 return &
self->options->super.multi_line_options;
150 log_proto_server_poll_prepare(LogProtoServer *s, GIOCondition *cond, gint *timeout)
155 *timeout = s->options->super.idle_timeout;
159 static inline gboolean
160 log_proto_server_restart_with_state(LogProtoServer *s, PersistState *
state,
const gchar *persist_name)
162 if (s->restart_with_state)
163 return s->restart_with_state(s,
state, persist_name);
168 log_proto_server_fetch(LogProtoServer *s,
const guchar **
msg, gsize *msg_len, gboolean *may_read,
172 return s->fetch(s,
msg, msg_len, may_read,
aux, bookmark);
177 log_proto_server_get_fd(LogProtoServer *s)
182 return s->transport_stack.fd;
186 log_proto_server_reset_error(LogProtoServer *s)
194 s->wakeup_callback.user_data = user_data;
195 s->wakeup_callback.func = wakeup;
201 if (wakeup_callback->
func)
209 void log_proto_server_init(LogProtoServer *s, LogTransport *transport,
const LogProtoServerOptionsStorage *options);
214 log_proto_server_set_ack_tracker(LogProtoServer *s, AckTracker *ack_tracker)
216 g_assert(ack_tracker);
217 s->ack_tracker = ack_tracker;
220 #define DEFINE_LOG_PROTO_SERVER(prefix, options...) \
222 prefix ## _server_plugin_construct(Plugin *self) \
224 static LogProtoServerFactory proto = { \
225 .construct = prefix ## _server_new, \
231 #define LOG_PROTO_SERVER_PLUGIN(prefix, __name) \
233 .type = LL_CONTEXT_SERVER_PROTO, \
235 .construct = prefix ## _server_plugin_construct, \
238 #define LOG_PROTO_SERVER_PLUGIN_WITH_GRAMMAR(__parser, __name) \
240 .type = LL_CONTEXT_SERVER_PROTO, \
242 .parser = &__parser, \
249 LogProtoServer *(*construct)(LogTransport *transport,
const LogProtoServerOptionsStorage *
options);
253 static inline LogProtoServer *
254 log_proto_server_factory_construct(LogProtoServerFactory *
self, LogTransport *transport,
255 const LogProtoServerOptionsStorage *options)
257 return self->construct(transport,
options);
262 const guchar *
find_eom(
const guchar *s, gsize n);
const gchar * name
Definition: debugger.c:265
void log_proto_server_options_set_ack_tracker_factory(LogProtoServerOptionsStorage *s, AckTrackerFactory *factory)
Definition: logproto-server.c:165
void log_proto_server_options_init(LogProtoServerOptionsStorage *options, GlobalConfig *cfg)
Definition: logproto-server.c:184
void log_proto_server_free(LogProtoServer *s)
Definition: logproto-server.c:132
LogProtoPrepareAction
Definition: logproto-server.h:39
@ LPPA_FORCE_SCHEDULE_FETCH
Definition: logproto-server.h:41
@ LPPA_SUSPEND
Definition: logproto-server.h:42
@ LPPA_POLL_IO
Definition: logproto-server.h:40
gboolean log_proto_server_is_position_tracked(LogProtoServer *s)
Definition: logproto-server.c:111
void log_proto_server_free_method(LogProtoServer *s)
Definition: logproto-server.c:125
void log_proto_server_options_defaults(LogProtoServerOptionsStorage *options)
Definition: logproto-server.c:172
gboolean log_proto_server_options_set_encoding(LogProtoServerOptionsStorage *s, const gchar *encoding)
Definition: logproto-server.c:149
LogProtoServerFactory * log_proto_server_get_factory(PluginContext *context, const gchar *name)
Definition: logproto-server.c:248
void(* LogProtoServerWakeupFunc)(gpointer user_data)
Definition: logproto-server.h:82
AckTrackerFactory * log_proto_server_get_ack_tracker_factory(LogProtoServer *s)
Definition: logproto-server.c:105
const guchar * find_eom(const guchar *s, gsize n)
Definition: logproto-server.c:45
void log_proto_server_options_destroy(LogProtoServerOptionsStorage *options)
Definition: logproto-server.c:235
gboolean log_proto_server_options_validate(LogProtoServerOptionsStorage *options)
Definition: logproto-server.c:223
char static_assert_size_check_LogProtoServerOptions[LOG_PROTO_SERVER_OPTIONS_SIZE >=sizeof(LogProtoServerOptions) ? 1 :-1]
Definition: logproto-server.h:73
#define LOG_PROTO_SERVER_OPTIONS_SIZE
Definition: logproto-server.h:45
gboolean log_proto_server_validate_options_method(LogProtoServer *s)
Definition: logproto-server.c:119
void log_proto_server_init(LogProtoServer *s, LogTransport *transport, const LogProtoServerOptionsStorage *options)
Definition: logproto-server.c:140
LogProtoStatus
Definition: logproto.h:33
@ LPS_SUCCESS
Definition: logproto.h:34
@ LPS_AGAIN
Definition: logproto.h:38
Definition: logproto-server.h:84
gpointer user_data
Definition: logproto-server.h:86
LogProtoServerWakeupFunc func
Definition: logproto-server.h:85
Definition: transport-aux-data.h:30
Definition: multi-line-factory.h:43
Definition: logproto-server.h:248
gint default_inet_port
Definition: logproto-server.h:250
Definition: logproto-server.h:48
gint max_msg_size
Definition: logproto-server.h:56
gint init_buffer_size
Definition: logproto-server.h:58
gboolean trim_large_messages
Definition: logproto-server.h:57
gboolean(* validate)(LogProtoServerOptionsStorage *self)
Definition: logproto-server.h:51
gchar * encoding
Definition: logproto-server.h:54
gint idle_timeout
Definition: logproto-server.h:60
MultiLineOptions multi_line_options
Definition: logproto-server.h:62
gboolean initialized
Definition: logproto-server.h:52
AckTrackerFactory * ack_tracker_factory
Definition: logproto-server.h:61
gint max_buffer_size
Definition: logproto-server.h:59
void(* destroy)(LogProtoServerOptionsStorage *self)
Definition: logproto-server.h:50
void(* init)(LogProtoServerOptionsStorage *self, GlobalConfig *cfg)
Definition: logproto-server.h:49
Definition: logproto-server.h:90
LogProtoStatus(* fetch)(LogProtoServer *s, const guchar **msg, gsize *msg_len, gboolean *may_read, LogTransportAuxData *aux, Bookmark *bookmark)
Definition: logproto-server.h:99
void(* free_fn)(LogProtoServer *s)
Definition: logproto-server.h:103
gboolean(* validate_options)(LogProtoServer *s)
Definition: logproto-server.h:101
const LogProtoServerOptionsStorage * options
Definition: logproto-server.h:92
AckTracker * ack_tracker
Definition: logproto-server.h:94
LogProtoStatus status
Definition: logproto-server.h:91
gboolean(* restart_with_state)(LogProtoServer *s, PersistState *state, const gchar *persist_name)
Definition: logproto-server.h:98
LogProtoPrepareAction(* poll_prepare)(LogProtoServer *s, GIOCondition *cond, gint *timeout)
Definition: logproto-server.h:97
LogTransportStack transport_stack
Definition: logproto-server.h:93
LogProtoStatus(* handshake)(LogProtoServer *s, gboolean *handshake_finished, LogProtoServer **proto_replacement)
Definition: logproto-server.h:102
LogProtoServerWakeupCallback wakeup_callback
Definition: logproto-server.h:96
LogTransportAuxData * aux
Definition: test_aux_data.c:28
GlobalConfig * cfg
Definition: test_batched_ack_tracker.c:34
CSVScannerOptions options
Definition: test_csv_scanner.c:30
GString * result
Definition: test_lexer_block.c:34
LogMessage * msg
Definition: test_rename.c:35
Definition: logproto-server.h:67
gchar __padding[LOG_PROTO_SERVER_OPTIONS_SIZE]
Definition: logproto-server.h:69
LogProtoServerOptions super
Definition: logproto-server.h:68