fswatch 1.17.1
fsevents_monitor.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2014-2021 Enrico M. Crisostomo
3 *
4 * This program is free software; you can redistribute it and/or modify it under
5 * the terms of the GNU General Public License as published by the Free Software
6 * Foundation; either version 3, or (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11 * details.
12 *
13 * You should have received a copy of the GNU General Public License along with
14 * this program. If not, see <http://www.gnu.org/licenses/>.
15 */
26#ifndef FSW_FSEVENT_MONITOR_H
27# define FSW_FSEVENT_MONITOR_H
28
29# include "monitor.hpp"
30# include <CoreServices/CoreServices.h>
31
32namespace fsw
33{
40 {
41 public:
42
62 static constexpr const char *DARWIN_EVENTSTREAM_NO_DEFER = "darwin.eventStream.noDefer";
63
67 fsevents_monitor(std::vector<std::string> paths,
69 void *context = nullptr);
70 fsevents_monitor(const fsevents_monitor& orig) = delete;
71 fsevents_monitor& operator=(const fsevents_monitor& that) = delete;
72
73 protected:
81 void run() override;
82
83 private:
84 static void fsevents_callback(ConstFSEventStreamRef streamRef,
85 void *clientCallBackInfo,
86 size_t numEvents,
87 void *eventPaths,
88 const FSEventStreamEventFlags eventFlags[],
89 const FSEventStreamEventId eventIds[]);
90
91 FSEventStreamRef stream = nullptr;
92 dispatch_queue_t fsevents_queue = nullptr;
93 bool no_defer();
94 void create_stream(CFArrayRef pathsToWatch);
95 };
96}
97
98#endif /* FSW_FSEVENT_MONITOR_H */
macOS FSEvents monitor.
Definition: fsevents_monitor.hpp:40
fsevents_monitor(std::vector< std::string > paths, FSW_EVENT_CALLBACK *callback, void *context=nullptr)
Constructs an instance of this class.
void run() override
Executes the monitor loop.
Definition: fsevents_monitor.cpp:93
static constexpr const char * DARWIN_EVENTSTREAM_NO_DEFER
Custom monitor property used to enable the kFSEventStreamCreateFlagNoDefer flag in the event stream.
Definition: fsevents_monitor.hpp:62
Base class of all monitors.
Definition: monitor.hpp:148
std::vector< std::string > paths
List of paths to watch.
Definition: monitor.hpp:534
void * context
Pointer to context data that will be passed to the monitor::callback.
Definition: monitor.hpp:554
FSW_EVENT_CALLBACK * callback
Callback to which change events should be notified.
Definition: monitor.hpp:549
Header of the fsw::monitor class.
Main namespace of libfswatch.
Definition: event.cpp:24
void FSW_EVENT_CALLBACK(const std::vector< event > &, void *)
Function definition of an event callback.
Definition: monitor.hpp:61