#ifndef UMUNDOINVOKER_H_77YXQGU7 #define UMUNDOINVOKER_H_77YXQGU7 #include #include #include #include #include #include #ifdef BUILD_AS_PLUGINS #include "uscxml/plugins/Plugins.h" #endif namespace uscxml { class Interpreter; class UmundoInvoker : public InvokerImpl, public umundo::TypedReceiver, public umundo::ResultSet { public: UmundoInvoker(); virtual ~UmundoInvoker(); virtual boost::shared_ptr create(Interpreter* interpreter); virtual std::set getNames() { std::set names; names.insert("umundo"); names.insert("http://umundo.tk.informatik.tu-darmstadt.de/"); names.insert("http://umundo.tk.informatik.tu-darmstadt.de"); return names; } virtual Data getDataModelVariables(); virtual void send(const SendRequest& req); virtual void cancel(const std::string sendId); virtual void invoke(const InvokeRequest& req); virtual void receive(void* object, umundo::Message* msg); virtual void added(umundo::ServiceDescription); virtual void removed(umundo::ServiceDescription); virtual void changed(umundo::ServiceDescription); protected: bool _isService; bool dataToProtobuf(google::protobuf::Message* msg, Data& data); bool protobufToData(Data& data, const google::protobuf::Message& msg); umundo::Node* _node; umundo::TypedPublisher* _pub; umundo::TypedSubscriber* _sub; umundo::ServiceFilter _svcFilter; umundo::ServiceManager _svcMgr; std::map _svcs; static std::multimap > _nodes; typedef std::multimap > _nodes_t; static umundo::Node* getNode(Interpreter* interpreter, const std::string& domain); }; #ifdef BUILD_AS_PLUGINS PLUMA_INHERIT_PROVIDER(UmundoInvoker, InvokerImpl); #endif } #endif /* end of include guard: UMUNDOINVOKER_H_77YXQGU7 */