summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Whiteboard/WhiteboardSession.cpp')
-rw-r--r--Swiften/Whiteboard/WhiteboardSession.cpp35
1 files changed, 23 insertions, 12 deletions
diff --git a/Swiften/Whiteboard/WhiteboardSession.cpp b/Swiften/Whiteboard/WhiteboardSession.cpp
index 859f2cd..bfef7c3 100644
--- a/Swiften/Whiteboard/WhiteboardSession.cpp
+++ b/Swiften/Whiteboard/WhiteboardSession.cpp
@@ -6,7 +6,6 @@
#include <Swiften/Whiteboard/WhiteboardSession.h>
-#include <boost/bind.hpp>
#include <boost/smart_ptr/make_shared.hpp>
#include <Swiften/Elements/WhiteboardPayload.h>
#include <Swiften/Elements/ErrorPayload.h>
@@ -17,8 +16,23 @@ namespace Swift {
WhiteboardSession::WhiteboardSession(const JID& jid, IQRouter* router) : toJID_(jid), router_(router) {
}
+ WhiteboardSession::~WhiteboardSession() {
+ }
+
void WhiteboardSession::handleIncomingAction(boost::shared_ptr<WhiteboardPayload> payload) {
- onDataReceived(payload->getData());
+ if (payload->getType() == WhiteboardPayload::SessionTerminate) {
+ onSessionTerminateReceived(toJID_);
+ return;
+ }
+
+ switch (payload->getType()) {
+ case WhiteboardPayload::Data:
+ onDataReceived(payload->getData());
+ break;
+ case WhiteboardPayload::SessionAccept:
+ onRequestAccepted(toJID_);
+ break;
+ }
}
void WhiteboardSession::sendData(const std::string& data) {
@@ -28,17 +42,14 @@ namespace Swift {
request->send();
}
- void WhiteboardSession::sendSessionRequest() {
- boost::shared_ptr<WhiteboardPayload> payload = boost::make_shared<WhiteboardPayload>(WhiteboardPayload::SessionRequest);
- sessionRequest = new GenericRequest<WhiteboardPayload>(IQ::Set, toJID_, payload, router_);
- sessionRequest->onResponse.connect(boost::bind(&WhiteboardSession::handleSessionRequestResponse, this, _1, _2));
- sessionRequest->send();
+ void WhiteboardSession::cancel() {
+ boost::shared_ptr<WhiteboardPayload> payload = boost::make_shared<WhiteboardPayload>(WhiteboardPayload::SessionTerminate);
+ boost::shared_ptr<GenericRequest<WhiteboardPayload> > request = boost::make_shared<GenericRequest<WhiteboardPayload> >(IQ::Set, toJID_, payload, router_);
+ request->send();
+ onSessionCancelled(toJID_);
}
- void WhiteboardSession::handleSessionRequestResponse(boost::shared_ptr<WhiteboardPayload> whiteboardPayload, boost::shared_ptr<ErrorPayload> errorPayload) {
- if (errorPayload.get() == 0) {
- onRequestAccepted(toJID_, this);
- }
- delete sessionRequest;
+ const JID& WhiteboardSession::getTo() const {
+ return toJID_;
}
}