LogQueue * log_queue_fifo_new(gint qoverflow_size, const gchar *persist_name) { LogQueueFifo *self; gint i; self = g_malloc0(sizeof(LogQueueFifo) + log_queue_max_threads * sizeof(self->qoverflow_input[0])); log_queue_init_instance(&self->super, persist_name); self->super.get_length = log_queue_fifo_get_length; self->super.keep_on_reload = log_queue_fifo_keep_on_reload; self->super.push_tail = log_queue_fifo_push_tail; self->super.push_head = log_queue_fifo_push_head; self->super.pop_head = log_queue_fifo_pop_head; self->super.ack_backlog = log_queue_fifo_ack_backlog; self->super.rewind_backlog = log_queue_fifo_rewind_backlog; self->super.free_fn = log_queue_fifo_free; for (i = 0; i < log_queue_max_threads; i++) { INIT_IV_LIST_HEAD(&self->qoverflow_input[i].items); main_loop_io_worker_finish_callback_init(&self->qoverflow_input[i].cb); self->qoverflow_input[i].cb.user_data = self; self->qoverflow_input[i].cb.func = log_queue_fifo_move_input; } INIT_IV_LIST_HEAD(&self->qoverflow_wait); INIT_IV_LIST_HEAD(&self->qoverflow_output); INIT_IV_LIST_HEAD(&self->qbacklog); self->qoverflow_size = qoverflow_size; return &self->super; }
void log_queue_disk_init_instance(LogQueueDisk *self) { log_queue_init_instance(&self->super,NULL); self->qdisk = qdisk_new(); self->super.get_length = _get_length; self->super.push_tail = _push_tail; self->super.push_head = _push_head; self->super.pop_head = _pop_head; self->super.ack_backlog = _ack_backlog; self->super.rewind_backlog = _rewind_backlog; self->super.rewind_backlog_all = _backlog_all; self->super.free_fn = _free; self->read_message = _read_message; self->write_message = _write_message; self->restart = _restart; self->restart_corrupted = _restart_corrupted; }