fswatch 1.20.1
Loading...
Searching...
No Matches
fen_monitor.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015-2016 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 */
25
26#ifndef FSW_FEN_MONITOR_H
27# define FSW_FEN_MONITOR_H
28
29# include "monitor.hpp"
30# include <string>
31# include <vector>
32# include <filesystem>
33
34namespace fsw
35{
40 struct fen_monitor_load;
41
46 struct fen_info;
47
54 class fen_monitor : public monitor
55 {
56 public:
60 fen_monitor(std::vector<std::string> paths,
62 void *context = nullptr);
63
67 virtual ~fen_monitor();
68
69 protected:
77 void run() override;
78
79 private:
80 fen_monitor(const fen_monitor& orig) = delete;
81 fen_monitor& operator=(const fen_monitor& that) = delete;
82
83 void scan_root_paths();
84 bool scan(const std::filesystem::path& path, bool is_root_path = true);
85 bool is_path_watched(const std::string& path) const;
86 bool add_watch(const std::string& path, const struct stat& fd_stat);
87 bool associate_port(struct fen_info *finfo, const struct stat& fd_stat);
88 void process_events(struct fen_info *obj, int events);
89 void rescan_removed();
90 void rescan_pending();
91
92 // pimpl
93 fen_monitor_load *load;
94 };
95}
96
97#endif /* FSW_FEN_MONITOR_H */
fen_monitor(std::vector< std::string > paths, FSW_EVENT_CALLBACK *callback, void *context=nullptr)
Constructs an instance of this class.
virtual ~fen_monitor()
Destroys an instance of this class.
void run() override
Executes the monitor loop.
std::vector< std::string > paths
List of paths to watch.
Definition monitor.hpp:527
void * context
Pointer to context data that will be passed to the monitor::callback.
Definition monitor.hpp:547
FSW_EVENT_CALLBACK * callback
Callback to which change events should be notified.
Definition monitor.hpp:542
monitor(std::vector< std::string > paths, FSW_EVENT_CALLBACK *callback, void *context=nullptr)
Constructs a monitor watching the specified paths.
Definition monitor.cpp:50
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:57