Nebula
Loading...
Searching...
No Matches
filewatcher.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
11#include "core/types.h"
12#include "core/refcounted.h"
13#include "core/singleton.h"
14#include "core/ptr.h"
15#include "util/stringatom.h"
16#include "util/dictionary.h"
17#include "io/uri.h"
18#include "io/ioserver.h"
19#include "threading/thread.h"
20#include "threading/safequeue.h"
21#include <functional>
22#include "util/bitfield.h"
23#if __WIN32__
25#elif __linux__
27#else
28#error "not implemented"
29#endif
30
31//------------------------------------------------------------------------------
32namespace IO
33{
34
35//------------------------------------------------------------------------------
43
52
53//------------------------------------------------------------------------------
61using WatchDelegate = std::function<void(WatchEvent const&)>;
62
63//------------------------------------------------------------------------------
71
72//------------------------------------------------------------------------------
73class FileWatcher : public Threading::Thread
74{
77
78public:
82 virtual ~FileWatcher();
83
85 void Setup();
86
87 void SetSpeed(double speed);
88
90 void Watch(Util::StringAtom const& folder, bool recursive, Util::BitField<8> flags, WatchDelegate const& callback);
92 void Unwatch(Util::StringAtom const& folder);
94 bool IsWatched(Util::StringAtom const& folder) const;
95
96private:
98 void Update();
100 void CheckQueue();
102 void DoWork();
103
107 double interval;
108
109};
110
111} // namespace IO
Util::Dictionary< Util::StringAtom, EventHandlerData > watchers
Definition filewatcher.h:105
double interval
Definition filewatcher.h:107
Ptr< IO::IoServer > ioServer
Definition filewatcher.h:104
void Watch(Util::StringAtom const &folder, bool recursive, Util::BitField< 8 > flags, WatchDelegate const &callback)
Register Folder.
Definition filewatcher.cc:74
virtual ~FileWatcher()
destructor
Definition filewatcher.cc:28
FileWatcher()
constructor
Definition filewatcher.cc:19
bool IsWatched(Util::StringAtom const &folder) const
check if folder is watched
Definition filewatcher.cc:98
void DoWork()
Definition filewatcher.cc:134
__DeclareInterfaceSingleton(FileWatcher)
void CheckQueue()
Definition filewatcher.cc:107
Threading::SafeQueue< EventHandlerData > watcherQueue
Definition filewatcher.h:106
__DeclareClass(FileWatcher)
void Unwatch(Util::StringAtom const &folder)
unregister
Definition filewatcher.cc:86
void Setup()
starts watcher thread
Definition filewatcher.cc:49
void Update()
checks for file modifications and calls registered callbacks
Definition filewatcher.cc:62
void SetSpeed(double speed)
Definition filewatcher.cc:40
Nebula's smart pointer class which manages the life time of RefCounted objects.
Definition ptr.h:38
Thread-safe version of Util::Queue.
Definition safequeue.h:27
Implements large bit field.
Definition bitfield.h:24
A collection of key/value pairs with quick value retrieval by key at roughly O(log n).
Definition dictionary.h:35
A StringAtom.
Definition stringatom.h:22
Instances of wrapped stream classes.
Definition multiplayerfeatureunit.cc:289
std::function< void(WatchEvent const &)> WatchDelegate
Definition filewatcher.h:61
WatchEventType
Definition filewatcher.h:37
@ Deleted
Definition filewatcher.h:39
@ Created
Definition filewatcher.h:38
@ NameChange
Definition filewatcher.h:40
@ Modified
Definition filewatcher.h:41
WatchFlags
Definition filewatcher.h:45
@ NameChanged
Definition filewatcher.h:46
@ Write
Definition filewatcher.h:48
@ Creation
Definition filewatcher.h:50
@ SizeChanged
Definition filewatcher.h:47
@ Access
Definition filewatcher.h:49
Definition filewatcher.h:65
FileWatcherPlatform data
Definition filewatcher.h:69
Util::BitField< 8 > flags
Definition filewatcher.h:68
Util::StringAtom folder
Definition filewatcher.h:67
WatchDelegate callback
Definition filewatcher.h:66
Definition linuxfilewatcher.h:19
Definition filewatcher.h:55
Util::String relativePath
Definition filewatcher.h:58
Util::StringAtom folder
Definition filewatcher.h:57
WatchEventType type
Definition filewatcher.h:56
Util::String file
Definition filewatcher.h:59
Nebula's universal string class.
Definition String.cs:8