2012-11-14 12:57:42 +01:00
|
|
|
/*******************************************************************************
|
|
|
|
Copyright (c) 2011, 2012 Dmitry Matveev <me@dmitrymatveev.co.uk>
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
|
|
all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
|
THE SOFTWARE.
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
|
|
#ifndef __KQUEUE_HELPER_H
|
|
|
|
#define __KQUEUE_HELPER_H
|
|
|
|
|
2015-01-17 00:51:34 +01:00
|
|
|
#include <gio/glocalfilemonitor.h>
|
2012-11-14 12:57:42 +01:00
|
|
|
#include <gio/gfilemonitor.h>
|
|
|
|
|
2018-02-20 17:57:00 +01:00
|
|
|
#include "dep-list.h"
|
|
|
|
|
2018-06-03 13:35:48 +02:00
|
|
|
typedef struct _GKqueueFileMonitor GKqueueFileMonitor;
|
|
|
|
|
2018-02-20 17:57:00 +01:00
|
|
|
/**
|
|
|
|
* kqueue_sub:
|
2018-06-03 13:35:48 +02:00
|
|
|
* @mon: a pointer to the GKqueueFileMonitor which holds this subscription
|
2018-02-20 17:57:00 +01:00
|
|
|
* @filename: a name of the file to monitor
|
|
|
|
* @fd: the associated file descriptor (used by kqueue)
|
|
|
|
*
|
2018-06-03 13:35:48 +02:00
|
|
|
* Represents a subscription on a file or directory. To check whether a
|
|
|
|
* subscription is active, check the fd field. If fd is not -1, it is an
|
|
|
|
* active subscription which can emit events from kqueue.
|
2018-02-20 17:57:00 +01:00
|
|
|
*/
|
|
|
|
typedef struct
|
|
|
|
{
|
2018-06-03 13:35:48 +02:00
|
|
|
GKqueueFileMonitor *mon;
|
2018-02-20 17:57:00 +01:00
|
|
|
GFileMonitorSource *source;
|
|
|
|
gchar* filename;
|
2018-06-03 13:35:48 +02:00
|
|
|
gchar* basename;
|
2018-02-20 17:57:00 +01:00
|
|
|
int fd;
|
|
|
|
dep_list* deps;
|
|
|
|
int is_dir;
|
|
|
|
} kqueue_sub;
|
|
|
|
|
|
|
|
gboolean _kqsub_start_watching (kqueue_sub *sub);
|
2018-06-03 13:35:48 +02:00
|
|
|
void _kh_dir_diff (kqueue_sub *sub, gboolean handle_deleted);
|
2018-02-20 17:57:00 +01:00
|
|
|
void _km_add_missing (kqueue_sub *sub);
|
2018-06-03 13:35:48 +02:00
|
|
|
gboolean _km_scan_missing (kqueue_sub *check_this_sub_only);
|
2018-02-20 17:57:00 +01:00
|
|
|
void _km_remove (kqueue_sub *sub);
|
2012-11-14 12:57:42 +01:00
|
|
|
|
|
|
|
#endif /* __KQUEUE_HELPER_H */
|