static gboolean afinter_source_init(LogPipe *s) { AFInterSource *self = (AFInterSource *) s; GlobalConfig *cfg = log_pipe_get_config(s); if (!log_source_init(s)) return FALSE; self->mark_freq = cfg->mark_freq; afinter_postpone_mark(self->mark_freq); self->mark_timer.expires = next_mark_target; /* post event is used by other threads and can only be unregistered if * current_afinter_source is set to NULL in a thread safe manner */ iv_event_register(&self->post); iv_event_register(&self->schedule_wakeup); afinter_source_start_watches(self); g_static_mutex_lock(&internal_msg_lock); current_internal_source = self; g_static_mutex_unlock(&internal_msg_lock); return TRUE; }
void log_reader_reopen(LogPipe *s, LogProto *proto, LogPipe *control, LogReaderOptions *options, gint stats_level, gint stats_source, const gchar *stats_id, const gchar *stats_instance, gboolean immediate_check) { LogReader *self = (LogReader *) s; gpointer args[] = { s, proto }; log_source_deinit(s); main_loop_call((MainLoopTaskFunc) log_reader_reopen_deferred, args, TRUE); if (!main_loop_is_main_thread()) { g_static_mutex_lock(&self->pending_proto_lock); while (self->pending_proto_present) { g_cond_wait(self->pending_proto_cond, g_static_mutex_get_mutex(&self->pending_proto_lock)); } g_static_mutex_unlock(&self->pending_proto_lock); } if (immediate_check) { log_reader_set_immediate_check(&self->super.super); } log_reader_set_options(s, control, options, stats_level, stats_source, stats_id, stats_instance); log_reader_set_follow_filename(s, stats_instance); log_source_init(s); }
static gboolean log_reader_init(LogPipe *s) { LogReader *self = (LogReader *) s; if (!log_source_init(s)) return FALSE; if (!log_proto_server_validate_options(self->proto)) return FALSE; if (!self->options->parse_options.format_handler) { msg_error("Unknown format plugin specified", evt_tag_str("format", self->options->parse_options.format)); return FALSE; } poll_events_set_callback(self->poll_events, log_reader_io_process_input, self); log_reader_update_watches(self); iv_event_register(&self->schedule_wakeup); iv_event_register(&self->last_msg_sent_event); return TRUE; }
static gboolean trigger_source_init (LogPipe *s) { TriggerSource *self = (TriggerSource *)s; if (!log_source_init (s)) return FALSE; iv_validate_now (); self->trigger_timer.expires = iv_now; self->trigger_timer.expires.tv_sec += self->options->trigger_freq; trigger_source_start_watches (self); return TRUE; }
static gboolean log_reader_init(LogPipe *s) { LogReader *self = (LogReader *) s; if (!log_source_init(s)) return FALSE; /* check for new data */ if (self->options->padding) { if (self->options->msg_size < self->options->padding) { msg_error("Buffer is too small to hold padding number of bytes", evt_tag_int("padding", self->options->padding), evt_tag_int("msg_size", self->options->msg_size), NULL); return FALSE; } } if (self->options->text_encoding) { if (!log_proto_set_encoding(self->proto, self->options->text_encoding)) { msg_error("Unknown character set name specified", evt_tag_str("encoding", self->options->text_encoding), NULL); return FALSE; } } if (!self->options->parse_options.format_handler) { msg_error("Unknown format plugin specified", evt_tag_str("format", self->options->parse_options.format), NULL); return FALSE; } /* the source added below references this logreader, it will be unref'd when the source is destroyed */ self->source = log_reader_watch_new(self, self->proto); g_source_attach(&self->source->super, NULL); return TRUE; }
static gboolean log_reader_init(LogPipe *s) { LogReader *self = (LogReader *) s; if (!log_source_init(s)) return FALSE; /* check for new data */ if (self->options->padding) { if (self->options->msg_size < self->options->padding) { msg_error("Buffer is too small to hold padding number of bytes", evt_tag_int("padding", self->options->padding), evt_tag_int("msg_size", self->options->msg_size), NULL); return FALSE; } } if (self->options->text_encoding) { if (!log_proto_set_encoding(self->proto, self->options->text_encoding)) { msg_error("Unknown character set name specified", evt_tag_str("encoding", self->options->text_encoding), NULL); return FALSE; } } if (!self->options->parse_options.format_handler) { msg_error("Unknown format plugin specified", evt_tag_str("format", self->options->parse_options.format), NULL); return FALSE; } if (!log_reader_start_watches(self)) return FALSE; iv_event_register(&self->schedule_wakeup); return TRUE; }
void log_reader_reopen(LogReader *self, LogProtoServer *proto, PollEvents *poll_events) { gpointer args[] = { self, proto, poll_events }; log_source_deinit(&self->super.super); main_loop_call((MainLoopTaskFunc) log_reader_reopen_deferred, args, TRUE); if (!main_loop_is_main_thread()) { g_static_mutex_lock(&self->pending_proto_lock); while (self->pending_proto_present) { g_cond_wait(self->pending_proto_cond, g_static_mutex_get_mutex(&self->pending_proto_lock)); } g_static_mutex_unlock(&self->pending_proto_lock); } log_source_init(&self->super.super); }
static gboolean _init(LogPipe *s) { JournalReader *self = (JournalReader *)s; if (journal_reader_initialized) { msg_error("The configuration must not contain more than one systemd-journal() source", NULL); return FALSE; } if (!log_source_init(s)) return FALSE; gint res = journald_open(self->journal, SD_JOURNAL_LOCAL_ONLY); if (res < 0) { msg_error("Error opening the journal", evt_tag_errno("error", errno), NULL); return FALSE; } if (!_set_starting_position(self)) { journald_close(self->journal); return FALSE; } if (!_add_poll_events(self)) { return FALSE; } self->immediate_check = TRUE; journal_reader_initialized = TRUE; _update_watches(self); iv_event_register(&self->schedule_wakeup); return TRUE; }
static gboolean log_reader_init(LogPipe *s) { LogReader *self = (LogReader *) s; if (!log_source_init(s)) return FALSE; if (!log_proto_server_validate_options(self->proto)) return FALSE; if (!self->options->parse_options.format_handler) { msg_error("Unknown format plugin specified", evt_tag_str("format", self->options->parse_options.format), NULL); return FALSE; } if (!log_reader_start_watches(self)) return FALSE; iv_event_register(&self->schedule_wakeup); return TRUE; }