diff options
author | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-06-12 10:52:03 (GMT) |
---|---|---|
committer | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-06-12 10:52:03 (GMT) |
commit | edd726abb1d0f7532218efbb8067a75a313e9e98 (patch) | |
tree | 7eec4f7912a59bb9a383a61c2c96616d5b5847b6 /Swiften/Whiteboard/WhiteboardSession.cpp | |
parent | 6e9fb4e4a3aeee8c40617a4dda6e5e0892ceebad (diff) | |
download | swift-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.cpp | 35 |
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_; } } |