summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMateusz Piekos <mateuszpiekos@gmail.com>2012-06-12 10:52:03 (GMT)
committerMateusz Piekos <mateuszpiekos@gmail.com>2012-06-12 10:52:03 (GMT)
commitedd726abb1d0f7532218efbb8067a75a313e9e98 (patch)
tree7eec4f7912a59bb9a383a61c2c96616d5b5847b6 /Swiften/Whiteboard/WhiteboardSession.cpp
parent6e9fb4e4a3aeee8c40617a4dda6e5e0892ceebad (diff)
downloadswift-contrib-edd726abb1d0f7532218efbb8067a75a313e9e98.zip
swift-contrib-edd726abb1d0f7532218efbb8067a75a313e9e98.tar.bz2
Improved whiteboard session handling
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_;
}
}