Unravel Engine C++ Reference
Loading...
Searching...
No Matches
watcher.h
Go to the documentation of this file.
1#ifndef FS_WATCHER_H
2#define FS_WATCHER_H
3
4#include <chrono>
5#include <functional>
6#include <string>
7#include <vector>
8#include <cstdint>
9
10#include "filesystem.h"
11#include "pattern_filter.h"
12
13namespace fs
14{
15
16
17
19{
20public:
29
30 struct entry
31 {
32 fs::path path;
33 fs::path last_path;
35 fs::file_time_type last_mod_time;
36 std::chrono::system_clock::time_point event_time{};
37 std::uintmax_t size = 0;
38 fs::file_type type;
39 };
40
41 using notify_callback = std::function<void(const std::vector<entry>&, bool)>;
42 using clock_t = std::chrono::steady_clock;
43 //-----------------------------------------------------------------------------
44 // Name : watch ()
51 //-----------------------------------------------------------------------------
52 static auto watch(const fs::path& path,
53 const pattern_filter& filter,
54 bool recursive,
55 bool initial_list,
56 clock_t::duration poll_interval,
57 notify_callback callback,
58 const std::string& watcher_name = "") -> std::uint64_t;
59
60 //-----------------------------------------------------------------------------
61 // Name : unwatch ()
65 //-----------------------------------------------------------------------------
66 static void unwatch(std::uint64_t key);
67
68 //-----------------------------------------------------------------------------
69 // Name : unwatch_all ()
73 //-----------------------------------------------------------------------------
74 static void unwatch_all();
75
76 //-----------------------------------------------------------------------------
77 // Name : touch ()
82 //-----------------------------------------------------------------------------
83 static void touch(const fs::path& path, bool recursive, fs::file_time_type time = fs::now());
84
85 //-----------------------------------------------------------------------------
86 // Name : pause ()
90 //-----------------------------------------------------------------------------
91 static void pause();
92
93 //-----------------------------------------------------------------------------
94 // Name : resume ()
98 //-----------------------------------------------------------------------------
99 static void resume();
100
101};
102
103auto to_string(const watcher::entry& e) -> std::string;
104
105
106inline auto filetime_to_system_clock(fs::file_time_type ft) -> std::chrono::system_clock::time_point
107{
108 using namespace std::chrono;
109
110 const auto now_file = fs::file_time_type::clock::now();
111 const auto now_sys = system_clock::now();
112
113 return now_sys + (ft - now_file);
114}
115
116} // namespace fs
117
118#endif
A filter that combines include and exclude patterns for file/directory filtering.
static void unwatch(std::uint64_t key)
Un-watches a previously registered file or directory.
Definition watcher.cpp:45
static void resume()
Resumes all watchers.
Definition watcher.cpp:93
std::function< void(const std::vector< entry > &, bool)> notify_callback
Definition watcher.h:41
static void pause()
Pauses all watchers.
Definition watcher.cpp:87
static void unwatch_all()
Un-watches all previously registered file or directory.
Definition watcher.cpp:51
static void touch(const fs::path &path, bool recursive, fs::file_time_type time=fs::now())
Sets the last modification time of a file or directory. by default sets the time to the current time.
Definition watcher.cpp:57
std::chrono::steady_clock clock_t
Definition watcher.h:42
static auto watch(const fs::path &path, const pattern_filter &filter, bool recursive, bool initial_list, clock_t::duration poll_interval, notify_callback callback, const std::string &watcher_name="") -> std::uint64_t
Watches a file or directory for modification and call back the specified std::function....
Definition watcher.cpp:27
Definition cache.hpp:11
auto filetime_to_system_clock(fs::file_time_type ft) -> std::chrono::system_clock::time_point
Definition watcher.h:106
auto to_string(const watcher::entry &e) -> std::string
Definition watcher.cpp:99
fs::path last_path
Definition watcher.h:33
fs::file_type type
Definition watcher.h:38
fs::file_time_type last_mod_time
Definition watcher.h:35
entry_status status
Definition watcher.h:34
fs::path path
Definition watcher.h:32
std::chrono::system_clock::time_point event_time
Definition watcher.h:36