25 #ifndef TRANSPORT_STACK_H_INCLUDED
26 #define TRANSPORT_STACK_H_INCLUDED
48 LogTransport *(*construct_transport)(
const LogTransportFactory *
self, LogTransportStack *stack);
49 void (*
free_fn)(LogTransportFactory *
self);
52 static inline LogTransport *
53 log_transport_factory_construct_transport(
const LogTransportFactory *
self, LogTransportStack *stack)
55 g_assert(
self->construct_transport);
57 LogTransport *transport =
self->construct_transport(
self, stack);
63 log_transport_factory_free(LogTransportFactory *
self)
111 static inline LogTransportFactory *
112 log_transport_stack_get_transport_factory(LogTransportStack *
self, gint index)
116 return self->transport_factories[index];
119 static inline LogTransport *
120 log_transport_stack_get_transport(LogTransportStack *
self, gint index)
124 return self->transports[index];
127 static inline LogTransport *
128 log_transport_stack_get_or_create_transport(LogTransportStack *
self, gint index)
130 LogTransport *transport = log_transport_stack_get_transport(
self, index);
135 if (
self->transport_factories[index])
137 self->transports[index] = log_transport_factory_construct_transport(
self->transport_factories[index],
self);
138 log_transport_assign_to_stack(
self->transports[index],
self);
139 return self->transports[index];
144 static inline LogTransport *
145 log_transport_stack_get_active(LogTransportStack *
self)
148 return log_transport_stack_get_or_create_transport(
self,
self->active_transport);
151 static inline gboolean
152 log_transport_stack_poll_prepare(LogTransportStack *
self, GIOCondition *cond)
154 LogTransport *transport = log_transport_stack_get_active(
self);
155 return log_transport_poll_prepare(transport, cond);
159 log_transport_stack_get_io_requirement(LogTransportStack *
self)
161 LogTransport *transport = log_transport_stack_get_active(
self);
162 return log_transport_get_io_requirement(transport);
166 log_transport_stack_write(LogTransportStack *
self,
const gpointer buf, gsize count)
168 LogTransport *transport = log_transport_stack_get_active(
self);
169 return log_transport_write(transport, buf, count);
173 log_transport_stack_writev(LogTransportStack *
self,
struct iovec *iov, gint iov_count)
175 LogTransport *transport = log_transport_stack_get_active(
self);
176 return log_transport_writev(transport, iov, iov_count);
182 LogTransport *transport = log_transport_stack_get_active(
self);
183 log_transport_aux_data_copy(
aux, &
self->aux_data);
184 return log_transport_read(transport, buf, count,
aux);
188 log_transport_stack_read_ahead(LogTransportStack *
self, gpointer buf, gsize count, gboolean *moved_forward)
190 LogTransport *transport = log_transport_stack_get_active(
self);
gssize log_transport_read_ahead(LogTransport *self, gpointer buf, gsize buflen, gboolean *moved_forward)
Definition: logtransport.c:83
LogTransportIOCond
Definition: logtransport.h:32
#define self
Definition: rcptid.c:38
Definition: transport-aux-data.h:30
Definition: transport-stack.h:46
void(* free_fn)(LogTransportFactory *self)
Definition: transport-stack.h:49
gint index
Definition: transport-stack.h:47
Definition: transport-stack.h:103
LogTransportAuxData aux_data
Definition: transport-stack.h:108
LogTransport * transports[LOG_TRANSPORT__MAX]
Definition: transport-stack.h:106
gint active_transport
Definition: transport-stack.h:104
gint fd
Definition: transport-stack.h:105
LogTransportFactory * transport_factories[LOG_TRANSPORT__MAX]
Definition: transport-stack.h:107
LogTransportAuxData * aux
Definition: test_aux_data.c:28
void log_transport_stack_shutdown(LogTransportStack *self)
Definition: transport-stack.c:117
LogTransportIndex
Definition: transport-stack.h:33
@ LOG_TRANSPORT__MAX
Definition: transport-stack.h:42
@ LOG_TRANSPORT_INITIAL
Definition: transport-stack.h:34
@ LOG_TRANSPORT_TLS
Definition: transport-stack.h:37
@ LOG_TRANSPORT_GZIP
Definition: transport-stack.h:39
@ LOG_TRANSPORT_SOCKET
Definition: transport-stack.h:36
@ LOG_TRANSPORT_FD
Definition: transport-stack.h:35
@ LOG_TRANSPORT_ZLIB
Definition: transport-stack.h:40
@ LOG_TRANSPORT_NONE
Definition: transport-stack.h:41
@ LOG_TRANSPORT_HAPROXY
Definition: transport-stack.h:38
void log_transport_stack_deinit(LogTransportStack *self)
Definition: transport-stack.c:135
void log_transport_stack_init(LogTransportStack *self, LogTransport *initial_transport)
Definition: transport-stack.c:125
void log_transport_stack_move(LogTransportStack *self, LogTransportStack *other)
Definition: transport-stack.c:90
void log_transport_stack_add_factory(LogTransportStack *self, LogTransportFactory *)
Definition: transport-stack.c:38
gboolean log_transport_stack_switch(LogTransportStack *self, gint index)
Definition: transport-stack.c:58
void log_transport_stack_add_transport(LogTransportStack *self, gint index, LogTransport *)
Definition: transport-stack.c:46
void log_transport_factory_init_instance(LogTransportFactory *self, LogTransportIndex index)
Definition: transport-stack.c:31