/* * 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 namespace Swift { IncomingWhiteboardSession::IncomingWhiteboardSession(const JID& jid, IQRouter* router) : WhiteboardSession(jid, router) { } IncomingWhiteboardSession::~IncomingWhiteboardSession() { } void IncomingWhiteboardSession::accept() { std::shared_ptr payload = std::make_shared(WhiteboardPayload::SessionAccept); std::shared_ptr > request = std::make_shared >(IQ::Set, toJID_, payload, router_); request->send(); onRequestAccepted(toJID_); } void IncomingWhiteboardSession::handleIncomingOperation(WhiteboardOperation::ref operation) { WhiteboardClient::Result pairResult = client.handleServerOperationReceived(operation); if (pairResult.client) { if (pairResult.client->getPos() != -1) { onOperationReceived(pairResult.client); } lastOpID = pairResult.client->getID(); } if (pairResult.server) { WhiteboardPayload::ref payload = std::make_shared(); payload->setOperation(pairResult.server); sendPayload(payload); } } void IncomingWhiteboardSession::sendOperation(WhiteboardOperation::ref operation) { operation->setID(idGenerator.generateID()); operation->setParentID(lastOpID); lastOpID = operation->getID(); WhiteboardOperation::ref result = client.handleLocalOperationReceived(operation); if (result) { WhiteboardPayload::ref payload = std::make_shared(); payload->setOperation(result); sendPayload(payload); } } }