예제 #1
0
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;
}
예제 #2
0
static gboolean
_add_poll_events(JournalReader *self)
{
    gint fd = journald_get_fd(self->journal);
    if (fd < 0)
    {
        msg_error("Error setting up journal polling, journald_get_fd() returned failure",
                  evt_tag_errno("error", errno));
        journald_close(self->journal);
        return FALSE;
    }

    self->poll_events = poll_fd_events_new(fd);
    poll_events_set_callback(self->poll_events, _io_process_async_input, self);
    return TRUE;
}