diff options
Diffstat (limited to 'src/uscxml/plugins/IOProcessorImpl.h')
-rw-r--r-- | src/uscxml/plugins/IOProcessorImpl.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/uscxml/plugins/IOProcessorImpl.h b/src/uscxml/plugins/IOProcessorImpl.h new file mode 100644 index 0000000..0e5b44a --- /dev/null +++ b/src/uscxml/plugins/IOProcessorImpl.h @@ -0,0 +1,74 @@ +/** + * @file + * @author 2012-2014 Stefan Radomski (stefan.radomski@cs.tu-darmstadt.de) + * @copyright Simplified BSD + * + * @cond + * This program is free software: you can redistribute it and/or modify + * it under the terms of the FreeBSD license as published by the FreeBSD + * project. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the FreeBSD license along with this + * program. If not, see <http://www.opensource.org/licenses/bsd-license>. + * @endcond + */ + +#ifndef IOPROCESSORIMPL_H_92E6AA44 +#define IOPROCESSORIMPL_H_92E6AA44 + + +#include "uscxml/Common.h" +#include "uscxml/plugins/EventHandler.h" +#include "uscxml/messages/Event.h" + +namespace uscxml { + +/** + * @ingroup ioproc + * @ingroup abstract + * Abstract base class for IOProcessor%s implementations. + */ +class USCXML_API IOProcessorImpl : public EventHandlerImpl { +public: + + /** + * Factory demands a new instance. + * @param interpreter The imlementation of the associated Interpreter + * @todo We will eventually introduce callbacks and prevent complete access to the interpreter. + */ + virtual std::shared_ptr<IOProcessorImpl> create(InterpreterImpl* interpreter) = 0; + + /** + * We received an event from the SCXML Interpreter we are associated with. + * @param target Where the event is supposed to be delivered to. + * @param event The event to deliver. + */ + virtual void eventFromSCXML(const std::string& target, const Event& event) = 0; + + /** + * Determine whether the given target is a valid destination for events. + * @param target A target where the Interpreter wants to deliver Event%s to. + * @return Whether or not the target is valid. + */ + virtual bool isValidTarget(const std::string& target) = 0; + +protected: + /** + * Return an event to the SCXML Interpreter instance. + * @param event An event to enqueue at the interpreter's external queue. + * @param type The type of this I/O Processor for `event.origintype`. + * @param origin The origin of this I/O Processor for `event.origin`. + * @param internal If the event is to be delivered to the Interpreter's internal queue instead. + */ + void eventToSCXML(Event& event, const std::string& type, const std::string& origin, bool internal = false); + +}; + +} + + +#endif /* end of include guard: IOPROCESSORIMPL_H_92E6AA44 */ |