diff options
Diffstat (limited to 'src/uscxml/plugins/ioprocessor/modality/MMIMessages.h')
-rw-r--r-- | src/uscxml/plugins/ioprocessor/modality/MMIMessages.h | 327 |
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 */ |