diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-09-23 16:30:04 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2013-09-23 16:30:04 (GMT) |
commit | be3c180fec71866a91b5f9297708d581bc1d6435 (patch) | |
tree | 830acee295b8456d1e629a0db6c3734f629074a3 /src/uscxml/plugins/invoker/filesystem/dirmon | |
parent | 8dde1311719b29c63efb379566916cb1aa9a7cd7 (diff) | |
download | uscxml-be3c180fec71866a91b5f9297708d581bc1d6435.zip uscxml-be3c180fec71866a91b5f9297708d581bc1d6435.tar.gz uscxml-be3c180fec71866a91b5f9297708d581bc1d6435.tar.bz2 |
Added instant messaging invoker
Diffstat (limited to 'src/uscxml/plugins/invoker/filesystem/dirmon')
-rw-r--r-- | src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.cpp | 31 | ||||
-rw-r--r-- | src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h | 2 |
2 files changed, 28 insertions, 5 deletions
diff --git a/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.cpp b/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.cpp index 1292e3a..559e441 100644 --- a/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.cpp +++ b/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.cpp @@ -49,7 +49,27 @@ boost::shared_ptr<InvokerImpl> DirMonInvoker::create(InterpreterImpl* interprete } Data DirMonInvoker::getDataModelVariables() { + tthread::lock_guard<tthread::recursive_mutex> lock(_mutex); + Data data; + data.compound["dir"] = Data(_dir, Data::VERBATIM); + + std::set<std::string>::iterator suffixIter = _suffixes.begin(); + while(suffixIter != _suffixes.end()) { + data.compound["suffixes"].array.push_back(Data(*suffixIter, Data::VERBATIM)); + suffixIter++; + } + + std::map<std::string, struct stat> entries = _watcher->getAllEntries(); + std::map<std::string, struct stat>::iterator entryIter = entries.begin(); + while(entryIter != entries.end()) { + data.compound["file"].compound[entryIter->first].compound["mtime"] = toStr(entryIter->second.st_mtime); + data.compound["file"].compound[entryIter->first].compound["ctime"] = toStr(entryIter->second.st_mtime); + data.compound["file"].compound[entryIter->first].compound["atime"] = toStr(entryIter->second.st_mtime); + data.compound["file"].compound[entryIter->first].compound["size"] = toStr(entryIter->second.st_mtime); + entryIter++; + } + return data; } @@ -115,7 +135,10 @@ void DirMonInvoker::invoke(const InvokeRequest& req) { void DirMonInvoker::run(void* instance) { while(((DirMonInvoker*)instance)->_isRunning) { - ((DirMonInvoker*)instance)->_watcher->updateEntries(); + { + tthread::lock_guard<tthread::recursive_mutex> lock(((DirMonInvoker*)instance)->_mutex); + ((DirMonInvoker*)instance)->_watcher->updateEntries(); + } tthread::this_thread::sleep_for(tthread::chrono::milliseconds(20)); } } @@ -233,7 +256,7 @@ DirectoryWatch::~DirectoryWatch() { } } - + void DirectoryWatch::reportAsDeleted() { std::map<std::string, struct stat>::iterator fileIter = _knownEntries.begin(); while(fileIter != _knownEntries.end()) { @@ -248,8 +271,8 @@ void DirectoryWatch::reportAsDeleted() { monIter++; } } - _knownEntries.erase(fileIter->first); - fileIter++; + _knownEntries.erase(fileIter++); +// fileIter++; } assert(_knownDirs.size() == 0); assert(_knownEntries.size() == 0); diff --git a/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h b/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h index 59eee81..f5aa4bc 100644 --- a/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h +++ b/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h @@ -44,7 +44,7 @@ public: std::map<std::string, struct stat> dirEntries = dirIter->second->getAllEntries(); std::map<std::string, struct stat>::iterator dirEntryIter = dirEntries.begin(); while(dirEntryIter != dirEntries.end()) { - entries[dirIter->first + PATH_SEPERATOR + dirEntryIter->first] = dirEntryIter->second; + entries[dirIter->first + '/' + dirEntryIter->first] = dirEntryIter->second; dirEntryIter++; } dirIter++; |