Overview:
FileSystemWatcher reports changes that are made to a monitored directory by signaling a registered callback function and passing that function a list of changes that have occurred. Each element of the list represents a file and the action that was performed on that file.
Example:
ADDED: /Users/jared/Desktop/test.txt
The list is held in a vector of type sEventInfo, where sEventInfo is a struct defined as follows:
enum eEvent { ADDED = 0, MODIFIED, DELETED }; struct sEventInfo { eEvent event; std::string absFilePath; };
The eEvent enumerator specifies the action taken on the file and the string absFilePath is the absolute file path of the file.
Usage:
SimpleEventCatcher is a dummy class that serves as an example of how to register for signals from FileSystemWatcher. These are the basic steps:
// invoke file system watcher on specified path FileSystemWatcher watcher("/Users/jared/Desktop"); // pass the instance of FileSystemWatcher to the class // that will register for event notifications SimpleEventCatcher dirEventCatcher(&watcher); // register for directory event signal (callback function) QObject::connect(watcher, SIGNAL(dirEventSignal(std::vector<sEventInfo>)), this, SLOT(handleDirEvent(std::vector<sEventInfo>))); // implement handleDirEvent void SimpleEventCatcher::handleDirEvent(std::vector<sEventInfo>) { /* implementation here */ }
Debug:
The debug flag can be set in filesystemwatcher.h. It is set to 1 by default and outputs the following information to the console:
[BOOTSTRAP]
[TIMER] Triggered Path: "/Users/jared/Desktop" "ADDED: /Users/jared/Desktop/test2.txt" "ADDED: /Users/jared/Desktop/test.txt"
[SIGNAL] From SimpleEventCatcher Slot: "ADDED: /Users/jared/Desktop/test2.txt" "ADDED: /Users/jared/Desktop/test.txt"
[\BOOTSTRAP]
[WATCHER] Triggered Path: "/Users/jared/Desktop" "DELETED: /Users/jared/Desktop/test2.txt"
[SIGNAL] From SimpleEventCatcher Slot: "DELETED: /Users/jared/Desktop/test2.txt"