LogProtoServer * construct_test_proto(LogTransport *transport) { proto_server_options.max_msg_size = 32; return log_proto_text_server_new(transport, get_inited_proto_server_options()); }
static gboolean afprogram_sd_init(LogPipe *s) { AFProgramSourceDriver *self = (AFProgramSourceDriver *) s; GlobalConfig *cfg = log_pipe_get_config(s); gint fd; if (!log_src_driver_init_method(s)) return FALSE; if (cfg) log_reader_options_init(&self->reader_options, cfg, self->super.super.group); msg_verbose("Starting source program", evt_tag_str("cmdline", self->process_info.cmdline->str)); if (!afprogram_popen(&self->process_info, G_IO_IN, &fd)) return FALSE; /* parent */ child_manager_register(self->process_info.pid, afprogram_sd_exit, log_pipe_ref(&self->super.super.super), (GDestroyNotify) log_pipe_unref); g_fd_set_nonblock(fd, TRUE); g_fd_set_cloexec(fd, TRUE); if (!self->reader) { LogTransport *transport; transport = log_transport_pipe_new(fd); self->reader = log_reader_new(s->cfg); log_reader_reopen(self->reader, log_proto_text_server_new(transport, &self->reader_options.proto_options.super), poll_fd_events_new(fd)); log_reader_set_options(self->reader, s, &self->reader_options, STATS_LEVEL0, SCS_PROGRAM, self->super.super.id, self->process_info.cmdline->str); } log_pipe_append((LogPipe *) self->reader, &self->super.super.super); if (!log_pipe_init((LogPipe *) self->reader)) { msg_error("Error initializing program source, closing fd", evt_tag_int("fd", fd)); log_pipe_unref((LogPipe *) self->reader); self->reader = NULL; close(fd); return FALSE; } return TRUE; }
static LogProto * affile_sd_construct_proto(AFFileSourceDriver *self, LogTransport *transport) { guint flags; LogProto *proto; MsgFormatHandler *handler; flags = ((self->reader_options.follow_freq > 0) ? LPBS_IGNORE_EOF | LPBS_POS_TRACKING : LPBS_NOMREAD); handler = self->reader_options.parse_options.format_handler; if ((handler && handler->construct_proto)) proto = self->reader_options.parse_options.format_handler->construct_proto(&self->reader_options.parse_options, transport, flags); else if (self->reader_options.padding) proto = log_proto_record_server_new(transport, self->reader_options.padding, flags); else proto = log_proto_text_server_new(transport, self->reader_options.msg_size, flags); return proto; }
static LogProtoServer * affile_sd_construct_proto(AFFileSourceDriver *self, gint fd) { LogProtoServerOptions *proto_options = &self->reader_options.proto_options.super; LogTransport *transport; MsgFormatHandler *format_handler; transport = affile_sd_construct_transport(self, fd); format_handler = self->reader_options.parse_options.format_handler; if ((format_handler && format_handler->construct_proto)) { return format_handler->construct_proto(&self->reader_options.parse_options, transport, proto_options); } if (self->pad_size) return log_proto_padded_record_server_new(transport, proto_options, self->pad_size); else if (affile_is_linux_proc_kmsg(self->filename->str)) return log_proto_linux_proc_kmsg_reader_new(transport, proto_options); else if (affile_is_linux_dev_kmsg(self->filename->str)) return log_proto_dgram_server_new(transport, proto_options); else { switch (self->multi_line_mode) { case MLM_INDENTED: return log_proto_indented_multiline_server_new(transport, proto_options); case MLM_PREFIX_GARBAGE: return log_proto_prefix_garbage_multiline_server_new(transport, proto_options, self->multi_line_prefix, self->multi_line_garbage); case MLM_PREFIX_SUFFIX: return log_proto_prefix_suffix_multiline_server_new(transport, proto_options, self->multi_line_prefix, self->multi_line_garbage); default: return log_proto_text_server_new(transport, proto_options); } } }
static gboolean afsocket_sc_init(LogPipe *s) { AFSocketSourceConnection *self = (AFSocketSourceConnection *) s; gint read_flags; LogTransport *transport; LogProto *proto; read_flags = ((self->owner->flags & AFSOCKET_DGRAM) ? LTF_RECV : 0); if (!self->reader) { #if ENABLE_SSL if (self->owner->tls_context) { TLSSession *tls_session = tls_context_setup_session(self->owner->tls_context); if (!tls_session) return FALSE; transport = log_transport_tls_new(tls_session, self->sock, read_flags); } else #endif transport = log_transport_plain_new(self->sock, read_flags); if ((self->owner->flags & AFSOCKET_SYSLOG_PROTOCOL) == 0) { /* plain protocol */ if (self->owner->flags & AFSOCKET_DGRAM) proto = log_proto_dgram_server_new(transport, self->owner->reader_options.msg_size, 0); else if (self->owner->reader_options.padding) proto = log_proto_record_server_new(transport, self->owner->reader_options.padding, 0); else proto = log_proto_text_server_new(transport, self->owner->reader_options.msg_size, 0); } else { if (self->owner->flags & AFSOCKET_DGRAM) { /* plain protocol */ proto = log_proto_dgram_server_new(transport, self->owner->reader_options.msg_size, 0); } else { /* framed protocol */ proto = log_proto_framed_server_new(transport, self->owner->reader_options.msg_size); } } self->reader = log_reader_new(proto); } log_reader_set_options(self->reader, s, &self->owner->reader_options, 1, afsocket_sc_stats_source(self), self->owner->super.super.id, afsocket_sc_stats_instance(self)); log_reader_set_peer_addr(self->reader, self->peer_addr); log_pipe_append(self->reader, s); if (log_pipe_init(self->reader, NULL)) { return TRUE; } else { log_pipe_unref(self->reader); self->reader = NULL; } return FALSE; }