diff options
Diffstat (limited to 'src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h')
-rw-r--r-- | src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h b/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h new file mode 100644 index 0000000..1437759 --- /dev/null +++ b/src/uscxml/plugins/invoker/filesystem/dirmon/DirMonInvoker.h @@ -0,0 +1,58 @@ +#ifndef DIRMONINVOKER_H_W09J90F0 +#define DIRMONINVOKER_H_W09J90F0 + +#include <uscxml/Interpreter.h> +#include "FileWatcher/FileWatcher.h" +#include <map> + +#ifdef BUILD_AS_PLUGINS +#include "uscxml/plugins/Plugins.h" +#endif + +namespace uscxml { + +class DirMonInvoker : public InvokerImpl, public FW::FileWatchListener { +public: + DirMonInvoker(); + virtual ~DirMonInvoker(); + virtual boost::shared_ptr<IOProcessorImpl> create(Interpreter* interpreter); + + virtual std::set<std::string> getNames() { + std::set<std::string> names; + names.insert("dirmon"); + names.insert("DirectoryMonitor"); + names.insert("http://uscxml.tk.informatik.tu-darmstadt.de/#dirmon"); + return names; + } + + virtual Data getDataModelVariables(); + virtual void send(const SendRequest& req); + virtual void cancel(const std::string sendId); + virtual void invoke(const InvokeRequest& req); + + void handleFileAction(FW::WatchID watchid, const FW::String& dir, const FW::String& filename, FW::Action action); + void reportExisting(); + void reportExistingIn(const std::string dir, FW::WatchID watchid); + virtual bool filter(const std::string filename); + + static void run(void* instance); + +protected: + bool _reportExisting; + bool _recurse; + std::string _suffix; + + bool _isRunning; + tthread::thread* _thread; + FW::FileWatcher _fileWatcher; + std::multimap<std::string, FW::WatchID> _watchIds; +}; + +#ifdef BUILD_AS_PLUGINS +PLUMA_INHERIT_PROVIDER(DirMonInvoker, Invoker); +#endif + +} + + +#endif /* end of include guard: DIRMONINVOKER_H_W09J90F0 */ |