syslog-ng source
directory-monitor.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 Balabit
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms of the GNU General Public License version 2 as published
6  * by the Free Software Foundation, or (at your option) any later version.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
16  *
17  * As an additional exemption you are allowed to compile & link against the
18  * OpenSSL libraries as published by the OpenSSL project. See the file
19  * COPYING for details.
20  *
21  */
22 #ifndef MODULES_AFFILE_DIRECTORY_MONITOR_H_
23 #define MODULES_AFFILE_DIRECTORY_MONITOR_H_
24 
25 #include <syslog-ng.h>
26 #include <iv.h>
27 
28 typedef enum
29 {
35  UNKNOWN
37 
38 typedef struct _DirectoryMonitorEvent
39 {
40  const gchar *name;
41  gchar *full_path;
44 
46  gpointer user_data);
47 
48 typedef struct _DirectoryMonitor DirectoryMonitor;
49 
51 {
52  const gchar *method;
53  gchar *dir;
54  gchar *full_path;
57  gpointer callback_data;
58 
59  guint recheck_time;
60  struct iv_timer check_timer;
61  struct iv_task scheduled_destructor;
62 
63  gboolean watches_running;
64  void (*start_watches)(DirectoryMonitor *self);
65  void (*stop_watches)(DirectoryMonitor *self);
66  void (*free_fn)(DirectoryMonitor *self);
67 };
68 
69 DirectoryMonitor *directory_monitor_new(const gchar *dir, guint recheck_time);
70 void directory_monitor_init_instance(DirectoryMonitor *self, const gchar *dir, guint recheck_time, const gchar *method);
71 void directory_monitor_free(DirectoryMonitor *self);
72 void directory_monitor_set_callback(DirectoryMonitor *self, DirectoryMonitorEventCallback callback, gpointer user_data);
73 
74 void directory_monitor_start(DirectoryMonitor *self);
75 void directory_monitor_stop(DirectoryMonitor *self);
76 
77 void directory_monitor_stop_and_destroy(DirectoryMonitor *self);
78 void directory_monitor_schedule_destroy(DirectoryMonitor *self);
79 
80 gboolean directory_monitor_can_notify_file_changes(DirectoryMonitor *self);
81 
82 void rearm_timer(struct iv_timer *rescan_timer, gint rearm_time);
83 
84 #endif /* MODULES_AFFILE_DIRECTORY_MONITOR_H_ */
DirectoryMonitor * directory_monitor_new(const gchar *dir, guint recheck_time)
Definition: directory-monitor.c:169
void rearm_timer(struct iv_timer *rescan_timer, gint rearm_time)
Definition: directory-monitor.c:78
void directory_monitor_stop(DirectoryMonitor *self)
Definition: directory-monitor.c:37
void directory_monitor_init_instance(DirectoryMonitor *self, const gchar *dir, guint recheck_time, const gchar *method)
Definition: directory-monitor.c:151
gboolean directory_monitor_can_notify_file_changes(DirectoryMonitor *self)
Definition: directory-monitor.c:145
void directory_monitor_schedule_destroy(DirectoryMonitor *self)
Definition: directory-monitor.c:124
DirectoryMonitorEventType
Definition: directory-monitor.h:29
@ UNKNOWN
Definition: directory-monitor.h:35
@ FILE_MODIFIED
Definition: directory-monitor.h:34
@ DIRECTORY_CREATED
Definition: directory-monitor.h:31
@ FILE_DELETED
Definition: directory-monitor.h:32
@ FILE_CREATED
Definition: directory-monitor.h:30
@ DIRECTORY_DELETED
Definition: directory-monitor.h:33
void directory_monitor_set_callback(DirectoryMonitor *self, DirectoryMonitorEventCallback callback, gpointer user_data)
Definition: directory-monitor.c:117
void directory_monitor_stop_and_destroy(DirectoryMonitor *self)
Definition: directory-monitor.c:133
void(* DirectoryMonitorEventCallback)(const DirectoryMonitorEvent *event, gpointer user_data)
Definition: directory-monitor.h:45
void directory_monitor_start(DirectoryMonitor *self)
Definition: directory-monitor.c:87
void directory_monitor_free(DirectoryMonitor *self)
Definition: directory-monitor.c:177
Definition: directory-monitor.h:39
DirectoryMonitorEventType event_type
Definition: directory-monitor.h:42
const gchar * name
Definition: directory-monitor.h:40
gchar * full_path
Definition: directory-monitor.h:41
Definition: directory-monitor.h:51
gpointer callback_data
Definition: directory-monitor.h:57
guint recheck_time
Definition: directory-monitor.h:59
gchar * full_path
Definition: directory-monitor.h:54
void(* start_watches)(DirectoryMonitor *self)
Definition: directory-monitor.h:64
gchar * dir
Definition: directory-monitor.h:53
struct iv_task scheduled_destructor
Definition: directory-monitor.h:61
DirectoryMonitorEventCallback callback
Definition: directory-monitor.h:56
void(* free_fn)(DirectoryMonitor *self)
Definition: directory-monitor.h:66
void(* stop_watches)(DirectoryMonitor *self)
Definition: directory-monitor.h:65
const gchar * method
Definition: directory-monitor.h:52
gboolean watches_running
Definition: directory-monitor.h:63
gboolean can_notify_file_changes
Definition: directory-monitor.h:55
struct iv_timer check_timer
Definition: directory-monitor.h:60