blob: da229ca695f70139181739d06448084109551cd4 [file] [log] [blame] [view]
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"