/* * Copyright (c) 2012 Mateusz Piękos * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ /* * Copyright (c) 2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include #include #include #include #include #include #include namespace Swift { OutgoingWhiteboardSession::OutgoingWhiteboardSession(const JID& jid, IQRouter* router) : WhiteboardSession(jid, router) { } OutgoingWhiteboardSession::~OutgoingWhiteboardSession() { } void OutgoingWhiteboardSession::startSession() { std::shared_ptr payload = std::make_shared(WhiteboardPayload::SessionRequest); std::shared_ptr > request = std::make_shared >(IQ::Set, toJID_, payload, router_); request->onResponse.connect(boost::bind(&OutgoingWhiteboardSession::handleRequestResponse, this, _1, _2)); request->send(); } void OutgoingWhiteboardSession::handleRequestResponse(std::shared_ptr /*payload*/, ErrorPayload::ref error) { if (error) { onRequestRejected(toJID_); } } void OutgoingWhiteboardSession::handleIncomingOperation(WhiteboardOperation::ref operation) { WhiteboardOperation::ref op = server.handleClientOperationReceived(operation); if (op->getPos() != -1) { onOperationReceived(op); } lastOpID = op->getID(); WhiteboardPayload::ref payload = std::make_shared(); payload->setOperation(op); sendPayload(payload); } void OutgoingWhiteboardSession::sendOperation(WhiteboardOperation::ref operation) { operation->setID(idGenerator.generateID()); operation->setParentID(lastOpID); lastOpID = operation->getID(); server.handleLocalOperationReceived(operation); WhiteboardPayload::ref payload = std::make_shared(); payload->setOperation(operation); sendPayload(payload); } }