syslog-ng source
logthrfetcherdrv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 Balabit
3  * Copyright (c) 2018 László Várady <laszlo.varady@balabit.com>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18  *
19  * As an additional exemption you are allowed to compile & link against the
20  * OpenSSL libraries as published by the OpenSSL project. See the file
21  * COPYING for details.
22  *
23  */
24 
25 #ifndef LOGTHRFETCHERDRV_H
26 #define LOGTHRFETCHERDRV_H
27 
28 #include "syslog-ng.h"
29 #include "logthrsourcedrv.h"
30 #include "logmsg/logmsg.h"
31 #include "compat/time.h"
32 
33 #include <iv.h>
34 #include <iv_event.h>
35 
36 typedef struct _LogThreadedFetcherDriver LogThreadedFetcherDriver;
37 
38 typedef enum
39 {
46 
47 typedef struct _LogThreadedFetchResult
48 {
50  LogMessage *msg;
52 
54 {
55  LogThreadedSourceDriver super;
56  time_t time_reopen;
57  gint64 no_data_delay;
58  struct iv_task fetch_task;
59  struct iv_event wakeup_event;
60  struct iv_event shutdown_event;
61  struct iv_timer reconnect_timer;
62  struct iv_timer no_data_timer;
63  gboolean suspended;
65 
66  void (*thread_init)(LogThreadedFetcherDriver *self);
67  void (*thread_deinit)(LogThreadedFetcherDriver *self);
68  gboolean (*connect)(LogThreadedFetcherDriver *self);
69  void (*disconnect)(LogThreadedFetcherDriver *self);
70  LogThreadedFetchResult (*fetch)(LogThreadedFetcherDriver *self);
71 
72  void (*request_exit)(LogThreadedFetcherDriver *self);
73 };
74 
75 void log_threaded_fetcher_driver_init_instance(LogThreadedFetcherDriver *self, GlobalConfig *cfg);
76 gboolean log_threaded_fetcher_driver_init_method(LogPipe *s);
79 
80 void log_threaded_fetcher_driver_set_fetch_no_data_delay(LogDriver *self, gdouble no_data_delay);
81 void log_threaded_fetcher_driver_set_time_reopen(LogDriver *s, time_t time_reopen);
82 
83 #endif
gboolean log_threaded_fetcher_driver_init_method(LogPipe *s)
Definition: logthrfetcherdrv.c:341
void log_threaded_fetcher_driver_free_method(LogPipe *s)
Definition: logthrfetcherdrv.c:368
void log_threaded_fetcher_driver_set_time_reopen(LogDriver *s, time_t time_reopen)
Definition: logthrfetcherdrv.c:39
ThreadedFetchResult
Definition: logthrfetcherdrv.h:39
@ THREADED_FETCH_NO_DATA
Definition: logthrfetcherdrv.h:44
@ THREADED_FETCH_SUCCESS
Definition: logthrfetcherdrv.h:42
@ THREADED_FETCH_NOT_CONNECTED
Definition: logthrfetcherdrv.h:41
@ THREADED_FETCH_TRY_AGAIN
Definition: logthrfetcherdrv.h:43
@ THREADED_FETCH_ERROR
Definition: logthrfetcherdrv.h:40
void log_threaded_fetcher_driver_init_instance(LogThreadedFetcherDriver *self, GlobalConfig *cfg)
Definition: logthrfetcherdrv.c:374
gboolean log_threaded_fetcher_driver_deinit_method(LogPipe *s)
Definition: logthrfetcherdrv.c:362
void log_threaded_fetcher_driver_set_fetch_no_data_delay(LogDriver *self, gdouble no_data_delay)
Definition: logthrfetcherdrv.c:32
Definition: logthrfetcherdrv.h:48
ThreadedFetchResult result
Definition: logthrfetcherdrv.h:49
LogMessage * msg
Definition: logthrfetcherdrv.h:50
Definition: logthrfetcherdrv.h:54
void(* disconnect)(LogThreadedFetcherDriver *self)
Definition: logthrfetcherdrv.h:69
void(* thread_init)(LogThreadedFetcherDriver *self)
Definition: logthrfetcherdrv.h:66
LogThreadedSourceDriver super
Definition: logthrfetcherdrv.h:55
gboolean suspended
Definition: logthrfetcherdrv.h:63
struct iv_timer reconnect_timer
Definition: logthrfetcherdrv.h:61
gint64 no_data_delay
Definition: logthrfetcherdrv.h:57
void(* request_exit)(LogThreadedFetcherDriver *self)
Definition: logthrfetcherdrv.h:72
struct iv_event shutdown_event
Definition: logthrfetcherdrv.h:60
struct iv_task fetch_task
Definition: logthrfetcherdrv.h:58
gboolean(* connect)(LogThreadedFetcherDriver *self)
Definition: logthrfetcherdrv.h:68
struct iv_event wakeup_event
Definition: logthrfetcherdrv.h:59
void(* thread_deinit)(LogThreadedFetcherDriver *self)
Definition: logthrfetcherdrv.h:67
struct iv_timer no_data_timer
Definition: logthrfetcherdrv.h:62
LogThreadedFetchResult(* fetch)(LogThreadedFetcherDriver *self)
Definition: logthrfetcherdrv.h:70
time_t time_reopen
Definition: logthrfetcherdrv.h:56
gboolean under_termination
Definition: logthrfetcherdrv.h:64
GlobalConfig * cfg
Definition: test_batched_ack_tracker.c:34