static gboolean log_reader_handle_line(LogReader *self, const guchar *line, gint length, GSockAddr *saddr) { LogMessage *m; LogPathOptions path_options = LOG_PATH_OPTIONS_INIT; gint i; msg_debug("Incoming log entry", evt_tag_printf("line", "%.*s", length, line), NULL); /* use the current time to get the time zone offset */ m = log_msg_new((gchar *) line, length, saddr, &self->options->parse_options); if (!m->saddr && self->peer_addr) { m->saddr = g_sockaddr_ref(self->peer_addr); } if (self->options->tags) { for (i = 0; i < self->options->tags->len; i++) { log_msg_set_tag_by_id(m, g_array_index(self->options->tags, LogTagId, i)); } } log_msg_set_tag_by_id(m, self->super.options->source_group_tag); log_pipe_queue(&self->super.super, m, &path_options); return log_source_free_to_send(&self->super); }
void log_reader_set_peer_addr(LogReader *s, GSockAddr *peer_addr) { LogReader *self = (LogReader *) s; g_sockaddr_unref(self->peer_addr); self->peer_addr = g_sockaddr_ref(peer_addr); }
AFSocketSourceConnection * afsocket_sc_new(GSockAddr *peer_addr, int fd, GlobalConfig *cfg) { AFSocketSourceConnection *self = g_new0(AFSocketSourceConnection, 1); log_pipe_init_instance(&self->super, cfg); self->super.init = afsocket_sc_init; self->super.deinit = afsocket_sc_deinit; self->super.notify = afsocket_sc_notify; self->super.free_fn = afsocket_sc_free; self->peer_addr = g_sockaddr_ref(peer_addr); self->sock = fd; return self; }
AFSocketSourceConnection * afsocket_sc_new(AFSocketSourceDriver *owner, GSockAddr *peer_addr, int fd) { AFSocketSourceConnection *self = g_new0(AFSocketSourceConnection, 1); log_pipe_init_instance(&self->super); self->super.init = afsocket_sc_init; self->super.deinit = afsocket_sc_deinit; self->super.notify = afsocket_sc_notify; self->super.free_fn = afsocket_sc_free; log_pipe_ref(&owner->super.super.super); self->owner = owner; self->peer_addr = g_sockaddr_ref(peer_addr); self->sock = fd; return self; }
static gboolean log_proto_buffered_server_fetch_from_buffer(LogProtoBufferedServer *self, const guchar **msg, gsize *msg_len, GSockAddr **sa) { gsize buffer_bytes; const guchar *buffer_start; LogProtoBufferedServerState *state = log_proto_buffered_server_get_state(self); gboolean success = FALSE; buffer_start = self->buffer + state->pending_buffer_pos; buffer_bytes = state->pending_buffer_end - state->pending_buffer_pos; if (buffer_bytes == 0) { /* if buffer_bytes is zero bytes, it means that we completely * processed our buffer without having a fraction of a line still * there. It is important to reset * pending_buffer_pos/pending_buffer_end to zero as the caller assumes * that if we return no message from the buffer, then buffer_pos is * _zero_. */ if (G_UNLIKELY(self->pos_tracking)) { state->pending_raw_stream_pos += state->pending_raw_buffer_size; state->pending_raw_buffer_size = 0; } state->pending_buffer_pos = state->pending_buffer_end = 0; goto exit; } success = self->fetch_from_buffer(self, buffer_start, buffer_bytes, msg, msg_len); if (sa) *sa = g_sockaddr_ref(self->prev_saddr); exit: log_proto_buffered_server_put_state(self); return success; }
static gboolean log_reader_handle_line(LogReader *self, const guchar *line, gint length, GSockAddr *saddr) { LogMessage *m; LogPathOptions path_options = LOG_PATH_OPTIONS_INIT; msg_debug("Incoming log entry", evt_tag_printf("line", "%.*s", length, line), NULL); /* use the current time to get the time zone offset */ m = log_msg_new((gchar *) line, length, saddr, &self->options->parse_options); log_msg_refcache_start_producer(m); if (!m->saddr && self->peer_addr) { m->saddr = g_sockaddr_ref(self->peer_addr); } log_pipe_queue(&self->super.super, m, &path_options); log_msg_refcache_stop(); return log_source_free_to_send(&self->super); }