00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _pfilemon_h_
00021 #define _pfilemon_h_
00022
00023 #include <pclasses/pexport.h>
00024 #include <pclasses/psignal.h>
00025 #include <pclasses/pexception.h>
00026
00027 namespace P {
00028
00030
00035 class PCORE_EXPORT FileMonitor {
00036 public:
00037 FileMonitor();
00038 ~FileMonitor();
00039
00040 void addDir(const char* path);
00041 void removeDir(const char* path);
00042
00043 bool isMonitored(const char* path) const;
00044
00046
00049 class PCORE_EXPORT Event {
00050 friend class FileMonitor;
00051 public:
00052
00054 enum type_t {
00055 None,
00056 Changed,
00057 Created,
00058 Deleted
00059 };
00060
00061 Event();
00062 Event(type_t t, const char* path);
00063 Event(const Event& e);
00064 ~Event();
00065
00066 inline type_t type() const
00067 { return m_type; }
00068
00069 inline const std::string& path() const
00070 { return m_path; }
00071
00072 Event& operator=(const Event& e);
00073
00074 private:
00075 type_t m_type;
00076 std::string m_path;
00077 };
00078
00079 bool wait(Event& e, unsigned int timeout);
00080
00081 private:
00082 struct file_monitor_handle_t;
00083 file_monitor_handle_t* m_handle;
00084 };
00085
00086 }
00087
00088 #endif