X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Ffs%2Ffilemonitor.h;fp=source%2Ffs%2Ffilemonitor.h;h=e96aff66637d239b5fd31a996ce544d4eb385bbc;hp=0000000000000000000000000000000000000000;hb=ffab0509a65f6f32851e64d66a5f7eeb453ab29f;hpb=c7b4b9d6e07b3e32e5b03f41f0640a8273eed848 diff --git a/source/fs/filemonitor.h b/source/fs/filemonitor.h new file mode 100644 index 0000000..e96aff6 --- /dev/null +++ b/source/fs/filemonitor.h @@ -0,0 +1,55 @@ +#ifndef FILEMONITOR_H_ +#define FILEMONITOR_H_ + +#include +#include +#include +#include + +namespace Msp { +namespace FS { + +class FileMonitor: NonCopyable +{ +private: + struct Private; + + struct MonitoredFile + { + FS::Path path; + bool modified; + int tag; + }; + +public: + sigc::signal signal_file_modified; + +private: + Private *priv; + IO::EventDispatcher *event_disp; + std::vector files; + +public: + FileMonitor(); + ~FileMonitor(); + + void add_file(const FS::Path &); + void remove_file(const FS::Path &); +private: + void prepare_file(MonitoredFile &); + void cleanup_file(MonitoredFile &); + +public: + void use_event_dispatcher(IO::EventDispatcher &); +private: + void platform_use_event_dispatcher(); + +public: + void tick(); + void tick(const Msp::Time::TimeDelta &); +}; + +} // namespace FS +} // namespace Msp + +#endif