static void log_threaded_dest_driver_do_insert(LogThrDestDriver *self) { LogMessage *msg; worker_insert_result_t result; LogPathOptions path_options = LOG_PATH_OPTIONS_INIT; while (!self->suspended && (msg = log_queue_pop_head(self->queue, &path_options)) != NULL) { msg_set_context(msg); log_msg_refcache_start_consumer(msg, &path_options); result = self->worker.insert(self, msg); switch (result) { case WORKER_INSERT_RESULT_DROP: log_threaded_dest_driver_message_drop(self, msg); _disconnect_and_suspend(self); break; case WORKER_INSERT_RESULT_ERROR: self->retries.counter++; if (self->retries.counter >= self->retries.max) { if (self->messages.retry_over) self->messages.retry_over(self, msg); log_threaded_dest_driver_message_drop(self, msg); } else { log_threaded_dest_driver_message_rewind(self, msg); _disconnect_and_suspend(self); } break; case WORKER_INSERT_RESULT_REWIND: log_threaded_dest_driver_message_rewind(self, msg); break; case WORKER_INSERT_RESULT_SUCCESS: log_threaded_dest_driver_message_accept(self, msg); break; default: break; } msg_set_context(NULL); log_msg_refcache_stop(); } }
static gboolean log_reader_handle_line(LogReader *self, const guchar *line, gint length, LogTransportAuxData *aux) { LogMessage *m; msg_debug("Incoming log entry", evt_tag_printf("line", "%.*s", length, line)); /* use the current time to get the time zone offset */ m = log_msg_new((gchar *) line, length, aux->peer_addr ? : self->peer_addr, &self->options->parse_options); log_msg_refcache_start_producer(m); log_transport_aux_data_foreach(aux, _add_aux_nvpair, m); log_source_post(&self->super, m); log_msg_refcache_stop(); return log_source_free_to_send(&self->super); }
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); }
static void _deinit(AckRecord *self) { log_msg_drop(self->original, &self->path_options, AT_PROCESSED); log_msg_refcache_stop(); }