]> git.tdb.fi Git - libs/core.git/blob - source/fs/unix/filemonitor_platform.h
Add some missing includes
[libs/core.git] / source / fs / unix / filemonitor_platform.h
1 #ifndef MSP_FS_FILEMONITOR_PLATFORM_H_
2 #define MSP_FS_FILEMONITOR_PLATFORM_H_
3
4 #include <msp/fs/path.h>
5 #include <msp/io/eventobject.h>
6 #include "filemonitor.h"
7
8 namespace Msp {
9 namespace FS {
10
11 class INotify: public IO::EventObject
12 {
13 private:
14         IO::Handle fd;
15
16 public:
17         INotify();
18         ~INotify();
19
20         int add_watch(const FS::Path &, int);
21         void remove_watch(int);
22
23         virtual void set_block(bool) { }
24         virtual void set_inherit(bool) { }
25
26 protected:
27         virtual std::size_t do_write(const char *, std::size_t);
28         virtual std::size_t do_read(char *, std::size_t);
29
30 public:
31         virtual const IO::Handle &get_handle(IO::Mode) { return fd; }
32         virtual const IO::Handle &get_event_handle() { return fd; }
33 };
34
35
36 struct FileMonitor::Private
37 {
38         FileMonitor &monitor;
39         INotify inotify;
40
41         Private(FileMonitor &);
42
43         void events_available();
44 };
45
46 } // namespace FS
47 } // namespace Msp
48
49 #endif