summaryrefslogtreecommitdiffstats
path: root/src/uscxml/Message.h
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2012-09-08 23:26:39 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2012-09-08 23:26:39 (GMT)
commitaa6c3a1257a29cc5bcf8b94893732ee553f27582 (patch)
tree625adb1a353a17ffed2c7e0bac686d705aaec93f /src/uscxml/Message.h
downloaduscxml-aa6c3a1257a29cc5bcf8b94893732ee553f27582.zip
uscxml-aa6c3a1257a29cc5bcf8b94893732ee553f27582.tar.gz
uscxml-aa6c3a1257a29cc5bcf8b94893732ee553f27582.tar.bz2
Initial upload
Still somewhat quirky to build but fairly feature complete
Diffstat (limited to 'src/uscxml/Message.h')
-rw-r--r--src/uscxml/Message.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/src/uscxml/Message.h b/src/uscxml/Message.h
new file mode 100644
index 0000000..a520ff5
--- /dev/null
+++ b/src/uscxml/Message.h
@@ -0,0 +1,122 @@
+#ifndef EVENT_H_XZAQ4HR
+#define EVENT_H_XZAQ4HR
+
+#include <map>
+#include <vector>
+#include <string>
+
+#include <DOM/Document.hpp>
+#include <DOM/io/Stream.hpp>
+
+#define TAGNAME(elem) ((Arabica::DOM::Element<std::string>)elem).getTagName()
+#define ATTR(elem, attr) ((Arabica::DOM::Element<std::string>)elem).getAttribute(attr)
+#define HAS_ATTR(elem, attr) ((Arabica::DOM::Element<std::string>)elem).hasAttribute(attr)
+
+namespace uscxml {
+
+class Data {
+public:
+ enum Type {
+ VERBATIM,
+ INTERPRETED
+ };
+
+ Data() {}
+ Data(const std::string& atom_, Type type_ = INTERPRETED) : atom(atom_), type(type_) {}
+ virtual ~Data() {}
+
+ static Data fromXML(const std::string& xmlString);
+ Arabica::DOM::Document<std::string> toDocument();
+ std::string toXMLString() {
+ std::stringstream ss;
+ ss << toDocument();
+ return ss.str();
+ }
+
+ std::map<std::string, Data> compound;
+ std::vector<Data> array;
+ std::string atom;
+ Type type;
+
+protected:
+ Arabica::DOM::Document<std::string> toNode(const Arabica::DOM::Document<std::string>& factory, const Data& data);
+
+#ifndef SWIGJAVA
+ friend std::ostream& operator<< (std::ostream& os, const Data& data);
+#endif
+};
+
+class Event : public Data {
+public:
+ enum Type {
+ PLATFORM,
+ INTERNAL,
+ EXTERNAL
+ };
+
+ Event() : type(INTERNAL) {}
+
+ std::string name;
+ Type type;
+ std::string origin;
+ std::string origintype;
+ Arabica::DOM::Node<std::string> dom;
+ std::string sendid;
+ std::string invokeid;
+
+ static Event fromXML(const std::string& xmlString);
+ Arabica::DOM::Document<std::string> toDocument();
+ std::string toXMLString() {
+ std::stringstream ss;
+ ss << toDocument();
+ return ss.str();
+ }
+
+#ifndef SWIGJAVA
+ friend std::ostream& operator<< (std::ostream& os, const Event& event);
+#endif
+};
+
+class InvokeRequest : public Event {
+public:
+ std::string type;
+ std::string src;
+ std::string namelist;
+ bool autoForward;
+ Arabica::DOM::Node<std::string> finalize;
+ std::map<std::string, std::string> params;
+ std::string content;
+
+ static InvokeRequest fromXML(const std::string& xmlString);
+ Arabica::DOM::Document<std::string> toDocument();
+ std::string toXMLString() {
+ std::stringstream ss;
+ ss << toDocument();
+ return ss.str();
+ }
+
+};
+
+class SendRequest : public Event {
+public:
+ std::string target;
+ std::string type;
+ uint32_t delayMs;
+ std::map<std::string, std::string> params;
+ std::map<std::string, std::string> namelist;
+ std::string content;
+
+ static SendRequest fromXML(const std::string& xmlString);
+ Arabica::DOM::Document<std::string> toDocument();
+ std::string toXMLString() {
+ std::stringstream ss;
+ ss << toDocument();
+ return ss.str();
+ }
+
+};
+
+}
+
+
+#endif /* end of include guard: EVENT_H_XZAQ4HR */