/* * Copyright (c) 2012 Mateusz Piękos * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt 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() { boost::shared_ptr payload = boost::make_shared(WhiteboardPayload::SessionRequest); boost::shared_ptr > request = boost::make_shared >(IQ::Set, toJID_, payload, router_); request->onResponse.connect(boost::bind(&OutgoingWhiteboardSession::handleRequestResponse, this, _1, _2)); request->send(); } std::string OutgoingWhiteboardSession::getClientID() const { return "a"; } void OutgoingWhiteboardSession::handleRequestResponse(boost::shared_ptr /*payload*/, ErrorPayload::ref error) { if (error) { onRequestRejected(toJID_); } } void OutgoingWhiteboardSession::handleIncomingOperation(WhiteboardOperation::ref operation) { // std::cout << "incoming pos: " << operation->getPos() << std::endl; // client.print(); WhiteboardClient::Result pairResult = client.handleServerOperationReceived(operation); if (pairResult.client) { /* WhiteboardInsertOperation::ref insertOp = boost::dynamic_pointer_cast(operation); if (insertOp) { std::cout << "iin1: " << insertOp->getID() << " " << insertOp->getPos() << " " << insertOp->getParentID() << std::endl; } WhiteboardUpdateOperation::ref updateOp = boost::dynamic_pointer_cast(operation); if (updateOp) { std::cout << "uin1: " << updateOp->getID() << " " << updateOp->getPos() << " " << updateOp->getParentID() << std::endl; } WhiteboardDeleteOperation::ref deleteOp = boost::dynamic_pointer_cast(operation); if (deleteOp) { std::cout << "din1: " << deleteOp->getID() << " " << deleteOp->getPos() << " " << deleteOp->getParentID() << std::endl; } insertOp = boost::dynamic_pointer_cast(pairResult.client); if (insertOp) { std::cout << "iin1: " << insertOp->getID() << " " << insertOp->getPos() << " " << insertOp->getParentID() << std::endl; } updateOp = boost::dynamic_pointer_cast(pairResult.client); if (updateOp) { std::cout << "uin1: " << updateOp->getID() << " " << updateOp->getPos() << " " << updateOp->getParentID() << std::endl; } deleteOp = boost::dynamic_pointer_cast(pairResult.client); if (deleteOp) { std::cout << "din1: " << deleteOp->getID() << " " << deleteOp->getPos() << " " << deleteOp->getParentID() << std::endl; }*/ onOperationReceived(pairResult.client); } if (pairResult.server) { //std::cout << "outts: " << pairResult.server->getID() << " " << pairResult.server->getPos() << std::endl; WhiteboardPayload::ref payload = boost::make_shared(); payload->setOperation(pairResult.server); sendPayload(payload); } } void OutgoingWhiteboardSession::sendOperation(WhiteboardOperation::ref operation) { //std::cout << "out1: " << operation->getID() << " " << operation->getPos() << " " << operation->getParentID() << std::endl; WhiteboardOperation::ref result = client.handleLocalOperationReceived(operation); if (result) { //std::cout << "out2: " << result->getID() << " " << result->getPos()<< " " << result->getParentID()<< std::endl; WhiteboardPayload::ref payload = boost::make_shared(); payload->setOperation(result); sendPayload(payload); } } }