Пример #1
0
gboolean
log_dest_driver_deinit_method(LogPipe *s)
{
  LogDestDriver *self = (LogDestDriver *) s;
  GList *l, *l_next;

  for (l = self->queues; l; l = l_next)
    {
      LogQueue *q = (LogQueue *) l->data;

      /* the GList struct will be freed by log_dest_driver_release_queue */
      l_next = l->next;

      /* we have to pass a reference to log_dest_driver_release_queue(),
       * which automatically frees the ref on the list too */
      log_dest_driver_release_queue(self, log_queue_ref(q));
    }
  g_assert(self->queues == NULL);

  stats_lock();
  stats_unregister_counter(SCS_DESTINATION | SCS_GROUP, self->super.group, NULL, SC_TYPE_PROCESSED, &self->super.processed_group_messages);
  stats_unregister_counter(SCS_CENTER, NULL, "queued", SC_TYPE_PROCESSED, &self->queued_global_messages);
  stats_unlock();

  if (!log_driver_deinit_method(s))
    return FALSE;
  return TRUE;
}
Пример #2
0
/* returns a reference */
LogQueue *
log_writer_get_queue(LogWriter *s)
{
  LogWriter *self = (LogWriter *) s;

  return log_queue_ref(self->queue);
}
Пример #3
0
/* consumes the reference */
void
log_writer_set_queue(LogWriter *s, LogQueue *queue)
{
  LogWriter *self = (LogWriter *)s;

  log_queue_unref(self->queue);
  self->queue = log_queue_ref(queue);
  log_queue_set_use_backlog(self->queue, TRUE);
}
Пример #4
0
gboolean
log_dest_driver_deinit_method(LogPipe *s)
{
    LogDestDriver *self = (LogDestDriver *) s;
    GList *l, *l_next;

    for (l = self->queues; l; l = l_next)
    {
        LogQueue *q = (LogQueue *) l->data;

        /* the GList struct will be freed by log_dest_driver_release_queue */
        l_next = l->next;

        /* we have to pass a reference to log_dest_driver_release_queue(),
         * which automatically frees the ref on the list too */
        log_dest_driver_release_queue(self, log_queue_ref(q));
    }
    g_assert(self->queues == NULL);

    if (!log_driver_deinit_method(s))
        return FALSE;
    return TRUE;
}