#ifndef EFSW_DIRWATCHERGENERIC_HPP #define EFSW_DIRWATCHERGENERIC_HPP #include #include #include #include namespace efsw { class DirWatcherGeneric { public: typedef std::map DirWatchMap; DirWatcherGeneric* Parent; WatcherGeneric* Watch; DirectorySnapshot DirSnap; DirWatchMap Directories; bool Recursive; DirWatcherGeneric( DirWatcherGeneric* parent, WatcherGeneric* ws, const std::string& directory, bool recursive, bool reportNewFiles = false ); ~DirWatcherGeneric(); void watch( bool reportOwnChange = false ); void watchDir( std::string& dir ); static bool isDir( const std::string& directory ); bool pathInWatches( std::string path ); void addChilds( bool reportNewFiles = true ); DirWatcherGeneric* findDirWatcher( std::string dir ); DirWatcherGeneric* findDirWatcherFast( std::string dir ); protected: bool Deleted; DirWatcherGeneric* createDirectory( std::string newdir ); void removeDirectory( std::string dir ); void moveDirectory( std::string oldDir, std::string newDir ); void resetDirectory( std::string directory ); void handleAction( const std::string& filename, unsigned long action, std::string oldFilename = "" ); }; } // namespace efsw #endif