/** * @file FileSystemEvent.h * @author Erik Zenker * @date 01.11.2012 * @copyright Gnu Public License **/ #pragma once #include #include 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 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; }