|
|
- /**
- * @file FileSystemEvent.h
- * @author Erik Zenker
- * @date 01.11.2012
- * @copyright Gnu Public License
- **/
-
- #pragma once
- #include <string>
- #include <sys/inotify.h>
-
- namespace filesystem = std::experimental::filesystem;
-
- /**
- * @brief Container for events on filesystem.
- * @class FileSystemEvent
- * FileSystemEvent.h
- * "include/FileSystemEvent.h"
- *
- *
- **/
- class FileSystemEvent {
- public:
- FileSystemEvent(int wd, uint32_t mask, const filesystem::path path);
- ~FileSystemEvent();
- std::string getMaskString() const;
-
- /* Member */
- int wd;
- uint32_t mask;
- filesystem::path path;
- std::optional<filesystem::path> recursive_root_path;
-
- private:
- std::string maskToString(uint32_t events) const;
-
- };
-
-
- inline FileSystemEvent::FileSystemEvent(const int wd, uint32_t mask, const filesystem::path path) :
- wd(wd),
- mask(mask),
- path(path),
- recursive_root_path{} {}
-
- inline FileSystemEvent::~FileSystemEvent(){
- }
-
- inline std::string FileSystemEvent::getMaskString() const{
- return maskToString(mask);
- }
-
- inline std::string FileSystemEvent::maskToString(uint32_t mask) const{
- std::string maskString = "";
-
- if(IN_ACCESS & mask)
- maskString.append("IN_ACCESS ");
- if(IN_ATTRIB & mask)
- maskString.append("IN_ATTRIB ");
- if(IN_CLOSE_WRITE & mask)
- maskString.append("IN_CLOSE_WRITE ");
- if(IN_CLOSE_NOWRITE & mask)
- maskString.append("IN_CLOSE_NOWRITE ");
- if(IN_CREATE & mask)
- maskString.append("IN_CREATE ");
- if(IN_DELETE & mask)
- maskString.append("IN_DELETE ");
- if(IN_DELETE_SELF & mask)
- maskString.append("IN_DELETE_SELF ");
- if(IN_MODIFY & mask)
- maskString.append("IN_MODIFY ");
- if(IN_MOVE_SELF & mask)
- maskString.append("IN_MOVE_SELF ");
- if(IN_MOVED_FROM & mask)
- maskString.append("IN_MOVED_FROM ");
- if(IN_MOVED_TO & mask)
- maskString.append("IN_MOVED_TO ");
- if(IN_OPEN & mask)
- maskString.append("IN_OPEN ");
- if(IN_ISDIR & mask)
- maskString.append("IN_ISDIR ");
- if(IN_UNMOUNT & mask)
- maskString.append("IN_UNMOUNT ");
- if(IN_Q_OVERFLOW & mask)
- maskString.append("IN_Q_OVERFLOW ");
- if(IN_CLOSE & mask)
- maskString.append("IN_CLOSE ");
- if(IN_IGNORED & mask)
- maskString.append("IN_IGNORED ");
- if(IN_ONESHOT & mask)
- maskString.append("IN_ONESHOT ");
-
- return maskString;
- }
-
|