summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/ioprocessor/modality/MMIMessages.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/plugins/ioprocessor/modality/MMIMessages.h')
-rw-r--r--src/uscxml/plugins/ioprocessor/modality/MMIMessages.h327
1 files changed, 264 insertions, 63 deletions
diff --git a/src/uscxml/plugins/ioprocessor/modality/MMIMessages.h b/src/uscxml/plugins/ioprocessor/modality/MMIMessages.h
index a5328ac..b7d017f 100644
--- a/src/uscxml/plugins/ioprocessor/modality/MMIMessages.h
+++ b/src/uscxml/plugins/ioprocessor/modality/MMIMessages.h
@@ -1,69 +1,142 @@
-#ifndef MMIMESSAGES_H_OS0SE7H5
-#define MMIMESSAGES_H_OS0SE7H5
+#ifndef MMIEVENT_H_OS0SE7H5
+#define MMIEVENT_H_OS0SE7H5
#include <DOM/Node.hpp>
#include <DOM/Document.hpp>
+#include <uscxml/Interpreter.h>
namespace uscxml {
-class MMIMessage {
+class MMIEvent {
public:
- virtual Arabica::DOM::Document<std::string> toXML();
- static MMIMessage fromXML(const Arabica::DOM::Document<std::string>& doc);
-
+ enum Type {
+ NEWCONTEXTREQUEST,
+ NEWCONTEXTRESPONSE,
+ PREPAREREQUEST,
+ PREPARERESPONSE,
+ STARTREQUEST,
+ STARTRESPONSE,
+ DONENOTIFICATION,
+ CANCELREQUEST,
+ CANCELRESPONSE,
+ PAUSEREQUEST,
+ PAUSERESPONSE,
+ RESUMEREQUEST,
+ RESUMERESPONSE,
+ EXTENSIONNOTIFICATION,
+ CLEARCONTEXTREQUEST,
+ CLEARCONTEXTRESPONSE,
+ STATUSREQUEST,
+ STATUSRESPONSE,
+ INVALID
+ };
+
+ static Type getType(Arabica::DOM::Node<std::string> node);
+ static Arabica::DOM::Node<std::string> getEventNode(Arabica::DOM::Node<std::string> node);
+
+ virtual Arabica::DOM::Document<std::string> toXML() const;
+ static MMIEvent fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL);
+
+ // conversion operator
+ operator Event() const;
+
std::string source;
std::string target;
std::string data;
std::string requestId;
std::string tagName;
-
+ Type type;
+
static std::string nameSpace;
protected:
- MMIMessage() {}
+ MMIEvent() {}
};
-class NewContextRequest : public MMIMessage {
+class MMIEventReceiver {
public:
- NewContextRequest() {
- tagName = "NewContextRequest";
- }
- NewContextRequest(const MMIMessage& father) : MMIMessage(father) {}
- static NewContextRequest fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return MMIMessage::fromXML(doc);
- }
+ virtual void received(const MMIEvent& mmiEvent) = 0;
+};
+class MMIEventSender {
+public:
+ virtual void send(const MMIEvent& mmiEvent) = 0;
};
-class ContextualizedRequest : public NewContextRequest {
+class NewContextRequest : public MMIEvent {
public:
- virtual Arabica::DOM::Document<std::string> toXML();
- static ContextualizedRequest fromXML(const Arabica::DOM::Document<std::string>& doc);
+ NewContextRequest() {
+ tagName = "NewContextRequest";
+ type = NEWCONTEXTREQUEST;
+ }
+ NewContextRequest(const MMIEvent& father) : MMIEvent(father) {}
+ static NewContextRequest fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ MMIEvent event = MMIEvent::fromXML(node, interpreter);
+ event.type = NEWCONTEXTREQUEST;
+ return event;
+ }
+ operator Event() const {
+ Event ev = MMIEvent::operator Event();
+ ev.setName("mmi.newcontextrequest");
+ ev.setDOM(toXML());
+ return ev;
+ }
+ std::string token; ///< special token for server-less modality components
+};
+class ContextualizedRequest : public MMIEvent {
+public:
+ virtual Arabica::DOM::Document<std::string> toXML() const;
+ static ContextualizedRequest fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL);
+ operator Event() const;
std::string context;
protected:
ContextualizedRequest() {}
- ContextualizedRequest(const NewContextRequest& father) : NewContextRequest(father) {}
+ ContextualizedRequest(const MMIEvent& father) : MMIEvent(father) {}
};
class PauseRequest : public ContextualizedRequest {
public:
PauseRequest() {
tagName = "PauseRequest";
+ type = PAUSEREQUEST;
}
PauseRequest(const ContextualizedRequest& father) : ContextualizedRequest(father) {}
- static PauseRequest fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return ContextualizedRequest::fromXML(doc);
+ static PauseRequest fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ PauseRequest event = ContextualizedRequest::fromXML(node, interpreter);
+ event.type = PAUSEREQUEST;
+ return event;
}
+ operator Event() const {
+ Event ev = ContextualizedRequest::operator Event();
+ ev.setName("mmi.pauserequest");
+ ev.setDOM(toXML());
+ return ev;
+ }
+
};
class ResumeRequest : public ContextualizedRequest {
public:
ResumeRequest() {
tagName = "ResumeRequest";
+ type = RESUMEREQUEST;
}
ResumeRequest(const ContextualizedRequest& father) : ContextualizedRequest(father) {}
- static ResumeRequest fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return ContextualizedRequest::fromXML(doc);
+ static ResumeRequest fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ ResumeRequest event = ContextualizedRequest::fromXML(node, interpreter);
+ event.type = RESUMEREQUEST;
+ return event;
+ }
+ operator Event() const {
+ Event ev = ContextualizedRequest::operator Event();
+ ev.setDOM(toXML());
+ ev.setName("mmi.resumerequest");
+ return ev;
}
};
@@ -71,10 +144,20 @@ class CancelRequest : public ContextualizedRequest {
public:
CancelRequest() {
tagName = "CancelRequest";
+ type = CANCELREQUEST;
}
CancelRequest(const ContextualizedRequest& father) : ContextualizedRequest(father) {}
- static CancelRequest fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return ContextualizedRequest::fromXML(doc);
+ static CancelRequest fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ CancelRequest event = ContextualizedRequest::fromXML(node, interpreter);
+ event.type = CANCELREQUEST;
+ return event;
+ }
+ operator Event() const {
+ Event ev = ContextualizedRequest::operator Event();
+ ev.setName("mmi.cancelrequest");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -82,10 +165,20 @@ class ClearContextRequest : public ContextualizedRequest {
public:
ClearContextRequest() {
tagName = "ClearContextRequest";
+ type = CLEARCONTEXTREQUEST;
}
ClearContextRequest(const ContextualizedRequest& father) : ContextualizedRequest(father) {}
- static ClearContextRequest fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return ContextualizedRequest::fromXML(doc);
+ static ClearContextRequest fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ ClearContextRequest event = ContextualizedRequest::fromXML(node, interpreter);
+ event.type = CLEARCONTEXTREQUEST;
+ return event;
+ }
+ operator Event() const {
+ Event ev = ContextualizedRequest::operator Event();
+ ev.setName("mmi.clearcontextrequest");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -93,10 +186,12 @@ class StatusRequest : public ContextualizedRequest {
public:
StatusRequest() {
tagName = "StatusRequest";
+ type = STARTREQUEST;
}
- virtual Arabica::DOM::Document<std::string> toXML();
- static StatusRequest fromXML(const Arabica::DOM::Document<std::string>& doc);
-
+ virtual Arabica::DOM::Document<std::string> toXML() const;
+ static StatusRequest fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL);
+ operator Event() const;
bool automaticUpdate;
protected:
StatusRequest(const ContextualizedRequest& father) : ContextualizedRequest(father) {}
@@ -110,8 +205,10 @@ public:
std::string fetchTimeout;
};
- virtual Arabica::DOM::Document<std::string> toXML();
- static ContentRequest fromXML(const Arabica::DOM::Document<std::string>& doc);
+ virtual Arabica::DOM::Document<std::string> toXML() const;
+ static ContentRequest fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL);
+ operator Event() const;
std::string content;
ContentURL contentURL;
protected:
@@ -123,10 +220,20 @@ class PrepareRequest : public ContentRequest {
public:
PrepareRequest() {
tagName = "PrepareRequest";
+ type = PREPAREREQUEST;
}
PrepareRequest(const ContentRequest& father) : ContentRequest(father) {}
- static PrepareRequest fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return ContentRequest::fromXML(doc);
+ static PrepareRequest fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ PrepareRequest event = ContentRequest::fromXML(node, interpreter);
+ event.type = PREPAREREQUEST;
+ return event;
+ }
+ operator Event() const {
+ Event ev = ContentRequest::operator Event();
+ ev.setName("mmi.preparerequest");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -134,10 +241,20 @@ class StartRequest : public ContentRequest {
public:
StartRequest() {
tagName = "StartRequest";
+ type = STARTREQUEST;
}
StartRequest(const ContentRequest& father) : ContentRequest(father) {}
- static StartRequest fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return ContentRequest::fromXML(doc);
+ static StartRequest fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ StartRequest event = ContentRequest::fromXML(node, interpreter);
+ event.type = STARTREQUEST;
+ return event;
+ }
+ operator Event() const {
+ Event ev = ContentRequest::operator Event();
+ ev.setName("mmi.startrequest");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -146,10 +263,12 @@ class ExtensionNotification : public ContextualizedRequest {
public:
ExtensionNotification() {
tagName = "ExtensionNotification";
+ type = EXTENSIONNOTIFICATION;
}
- virtual Arabica::DOM::Document<std::string> toXML();
- static ExtensionNotification fromXML(const Arabica::DOM::Document<std::string>& doc);
-
+ virtual Arabica::DOM::Document<std::string> toXML() const;
+ static ExtensionNotification fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL);
+ operator Event() const;
std::string name;
protected:
ExtensionNotification(const ContextualizedRequest& father) : ContextualizedRequest(father) {}
@@ -167,33 +286,45 @@ public:
StatusResponse() {
tagName = "StatusResponse";
+ type = STATUSRESPONSE;
}
- virtual Arabica::DOM::Document<std::string> toXML();
- static StatusResponse fromXML(const Arabica::DOM::Document<std::string>& doc);
+ virtual Arabica::DOM::Document<std::string> toXML() const;
+ static StatusResponse fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL);
Status status;
protected:
StatusResponse(const ContextualizedRequest& father) : ContextualizedRequest(father) {}
-
};
class StatusInfoResponse : public StatusResponse {
public:
- virtual Arabica::DOM::Document<std::string> toXML();
- static StatusInfoResponse fromXML(const Arabica::DOM::Document<std::string>& doc);
+ virtual Arabica::DOM::Document<std::string> toXML() const;
+ StatusInfoResponse(const StatusResponse& father) : StatusResponse(father) {}
+ static StatusInfoResponse fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL);
std::string statusInfo;
protected:
StatusInfoResponse() {}
- StatusInfoResponse(const StatusResponse& father) : StatusResponse(father) {}
};
class PrepareResponse : public StatusInfoResponse {
public:
PrepareResponse() {
tagName = "PrepareResponse";
+ type = PREPARERESPONSE;
}
PrepareResponse(const StatusInfoResponse& father) : StatusInfoResponse(father) {}
- static PrepareResponse fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return StatusInfoResponse::fromXML(doc);
+ static PrepareResponse fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ PrepareResponse event = StatusInfoResponse::fromXML(node, interpreter);
+ event.type = PREPARERESPONSE;
+ return event;
+ }
+ operator Event() const {
+ Event ev = StatusInfoResponse::operator Event();
+ ev.setName("mmi.prepareresponse");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -201,10 +332,20 @@ class StartResponse : public StatusInfoResponse {
public:
StartResponse() {
tagName = "StartResponse";
+ type = STARTRESPONSE;
}
StartResponse(const StatusInfoResponse& father) : StatusInfoResponse(father) {}
- static StartResponse fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return StatusInfoResponse::fromXML(doc);
+ static StartResponse fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ StartResponse event = StatusInfoResponse::fromXML(node, interpreter);
+ event.type = STARTRESPONSE;
+ return event;
+ }
+ operator Event() const {
+ Event ev = StatusInfoResponse::operator Event();
+ ev.setName("mmi.startresponse");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -212,10 +353,20 @@ class CancelResponse : public StatusInfoResponse {
public:
CancelResponse() {
tagName = "CancelResponse";
+ type = CANCELRESPONSE;
}
CancelResponse(const StatusInfoResponse& father) : StatusInfoResponse(father) {}
- static CancelResponse fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return StatusInfoResponse::fromXML(doc);
+ static CancelResponse fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ CancelResponse event = StatusInfoResponse::fromXML(node, interpreter);
+ event.type = CANCELRESPONSE;
+ return event;
+ }
+ operator Event() const {
+ Event ev = StatusInfoResponse::operator Event();
+ ev.setName("mmi.cancelresponse");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -223,10 +374,20 @@ class PauseResponse : public StatusInfoResponse {
public:
PauseResponse() {
tagName = "PauseResponse";
+ type = PAUSERESPONSE;
}
PauseResponse(const StatusInfoResponse& father) : StatusInfoResponse(father) {}
- static PauseResponse fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return StatusInfoResponse::fromXML(doc);
+ static PauseResponse fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ PauseResponse event = StatusInfoResponse::fromXML(node, interpreter);
+ event.type = PAUSERESPONSE;
+ return event;
+ }
+ operator Event() const {
+ Event ev = StatusInfoResponse::operator Event();
+ ev.setName("mmi.pauseresponse");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -234,10 +395,20 @@ class ResumeResponse : public StatusInfoResponse {
public:
ResumeResponse() {
tagName = "ResumeResponse";
+ type = RESUMERESPONSE;
}
ResumeResponse(const StatusInfoResponse& father) : StatusInfoResponse(father) {}
- static ResumeResponse fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return StatusInfoResponse::fromXML(doc);
+ static ResumeResponse fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ ResumeResponse event = StatusInfoResponse::fromXML(node, interpreter);
+ event.type = RESUMERESPONSE;
+ return event;
+ }
+ operator Event() const {
+ Event ev = StatusInfoResponse::operator Event();
+ ev.setName("mmi.resumeresponse");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -245,10 +416,20 @@ class ClearContextResponse : public StatusInfoResponse {
public:
ClearContextResponse() {
tagName = "ClearContextResponse";
+ type = CLEARCONTEXTRESPONSE;
}
ClearContextResponse(const StatusInfoResponse& father) : StatusInfoResponse(father) {}
- static ClearContextResponse fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return StatusInfoResponse::fromXML(doc);
+ static ClearContextResponse fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ ClearContextResponse event = StatusInfoResponse::fromXML(node, interpreter);
+ event.type = CLEARCONTEXTRESPONSE;
+ return event;
+ }
+ operator Event() const {
+ Event ev = StatusInfoResponse::operator Event();
+ ev.setName("mmi.clearcontextresponse");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -256,10 +437,20 @@ class NewContextResponse : public StatusInfoResponse {
public:
NewContextResponse() {
tagName = "NewContextResponse";
+ type = NEWCONTEXTRESPONSE;
}
NewContextResponse(const StatusInfoResponse& father) : StatusInfoResponse(father) {}
- static NewContextResponse fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return StatusInfoResponse::fromXML(doc);
+ static NewContextResponse fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ NewContextResponse event = StatusInfoResponse::fromXML(node, interpreter);
+ event.type = NEWCONTEXTRESPONSE;
+ return event;
+ }
+ operator Event() const {
+ Event ev = StatusInfoResponse::operator Event();
+ ev.setName("mmi.newcontextresponse");
+ ev.setDOM(toXML());
+ return ev;
}
};
@@ -268,13 +459,23 @@ class DoneNotification : public StatusInfoResponse {
public:
DoneNotification() {
tagName = "DoneNotification";
+ type = DONENOTIFICATION;
}
DoneNotification(const StatusInfoResponse& father) : StatusInfoResponse(father) {}
- static DoneNotification fromXML(const Arabica::DOM::Document<std::string>& doc) {
- return StatusInfoResponse::fromXML(doc);
+ static DoneNotification fromXML(Arabica::DOM::Node<std::string> node,
+ InterpreterImpl* interpreter = NULL) {
+ DoneNotification event = StatusInfoResponse::fromXML(node, interpreter);
+ event.type = DONENOTIFICATION;
+ return event;
+ }
+ operator Event() const {
+ Event ev = StatusInfoResponse::operator Event();
+ ev.setName("mmi.donenotification");
+ ev.setDOM(toXML());
+ return ev;
}
};
}
-#endif /* end of include guard: MMIMESSAGES_H_OS0SE7H5 */
+#endif /* end of include guard: MMIEVENT_H_OS0SE7H5 */