diff options
Diffstat (limited to 'Swiften/FileTransfer/DefaultRemoteJingleTransportCandidateSelector.cpp')
-rw-r--r-- | Swiften/FileTransfer/DefaultRemoteJingleTransportCandidateSelector.cpp | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/Swiften/FileTransfer/DefaultRemoteJingleTransportCandidateSelector.cpp b/Swiften/FileTransfer/DefaultRemoteJingleTransportCandidateSelector.cpp deleted file mode 100644 index 40b23d2..0000000 --- a/Swiften/FileTransfer/DefaultRemoteJingleTransportCandidateSelector.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2011 Tobias Markmann - * Licensed under the simplified BSD license. - * See Documentation/Licenses/BSD-simplified.txt for more information. - */ - -/* - * Copyright (c) 2013 Remko Tronçon - * Licensed under the GNU General Public License. - * See the COPYING file for more information. - */ - -#include <Swiften/FileTransfer/DefaultRemoteJingleTransportCandidateSelector.h> - -#include <boost/smart_ptr/make_shared.hpp> -#include <boost/bind.hpp> - -#include <Swiften/Base/Log.h> -#include <Swiften/Base/boost_bsignals.h> -#include <Swiften/Base/foreach.h> -#include <Swiften/Elements/JingleS5BTransportPayload.h> -#include <Swiften/Network/ConnectionFactory.h> -#include <Swiften/FileTransfer/SOCKS5BytestreamRegistry.h> - -namespace Swift { - -DefaultRemoteJingleTransportCandidateSelector::DefaultRemoteJingleTransportCandidateSelector(ConnectionFactory* connectionFactory, TimerFactory* timerFactory, CryptoProvider* crypto) : connectionFactory(connectionFactory), timerFactory(timerFactory), crypto(crypto) { -} - -DefaultRemoteJingleTransportCandidateSelector::~DefaultRemoteJingleTransportCandidateSelector() { -} - -void DefaultRemoteJingleTransportCandidateSelector::addRemoteTransportCandidates(JingleTransportPayload::ref transportPayload) { - JingleS5BTransportPayload::ref s5bPayload; - transportSID = transportPayload->getSessionID(); - if ((s5bPayload = boost::dynamic_pointer_cast<JingleS5BTransportPayload>(transportPayload))) { - foreach(JingleS5BTransportPayload::Candidate c, s5bPayload->getCandidates()) { - candidates.push(c); - } - } -} - -void DefaultRemoteJingleTransportCandidateSelector::selectCandidate() { - tryNextCandidate(true); -} - -void DefaultRemoteJingleTransportCandidateSelector::tryNextCandidate(bool error) { - if (error) { - if (s5bSession) { - SWIFT_LOG(debug) << "failed to connect" << std::endl; - } - if (candidates.empty()) { - // failed to connect to any of the candidates - // issue an error - SWIFT_LOG(debug) << "out of candidates )=" << std::endl; - JingleS5BTransportPayload::ref failed = boost::make_shared<JingleS5BTransportPayload>(); - failed->setCandidateError(true); - failed->setSessionID(transportSID); - onRemoteTransportCandidateSelectFinished(failed); - } else { - lastCandidate = candidates.top(); - // only try direct or assisted for now - if (lastCandidate.type == JingleS5BTransportPayload::Candidate::DirectType || - lastCandidate.type == JingleS5BTransportPayload::Candidate::AssistedType || lastCandidate.type == JingleS5BTransportPayload::Candidate::ProxyType ) { - // create connection - connection = connectionFactory->createConnection(); - s5bSession = boost::make_shared<SOCKS5BytestreamClientSession>(connection, lastCandidate.hostPort, SOCKS5BytestreamRegistry::getHostname(transportSID, requester, target, crypto), timerFactory); - - // bind onReady to this method - s5bSession->onSessionReady.connect(boost::bind(&DefaultRemoteJingleTransportCandidateSelector::tryNextCandidate, this, _1)); - - std::string candidateType; - if (lastCandidate.type == JingleS5BTransportPayload::Candidate::DirectType) { - candidateType = "direct"; - } else if (lastCandidate.type == JingleS5BTransportPayload::Candidate::AssistedType) { - candidateType = "assisted"; - } else if (lastCandidate.type == JingleS5BTransportPayload::Candidate::ProxyType) { - candidateType = "proxy"; - } - - // initiate connect - SWIFT_LOG(debug) << "try to connect to candidate of type " << candidateType << " : " << lastCandidate.hostPort.toString() << std::endl; - s5bSession->start(); - - // that's it. we're gonna be called back - candidates.pop(); - } else { - s5bSession.reset(); - candidates.pop(); - tryNextCandidate(true); - } - } - } else { - // we have a working connection, hooray - JingleS5BTransportPayload::ref success = boost::make_shared<JingleS5BTransportPayload>(); - success->setCandidateUsed(lastCandidate.cid); - success->setSessionID(transportSID); - onRemoteTransportCandidateSelectFinished(success); - } -} - -void DefaultRemoteJingleTransportCandidateSelector::setMinimumPriority(int priority) { - SWIFT_LOG(debug) << "priority: " << priority << std::endl; -} - -void DefaultRemoteJingleTransportCandidateSelector::setRequesterTarget(const JID& requester, const JID& target) { - this->requester = requester; - this->target = target; -} - -SOCKS5BytestreamClientSession::ref DefaultRemoteJingleTransportCandidateSelector::getS5BSession() { - return s5bSession; -} - -bool DefaultRemoteJingleTransportCandidateSelector::isActualCandidate(JingleTransportPayload::ref /* transportPayload */) { - return false; -} - -int DefaultRemoteJingleTransportCandidateSelector::getPriority(JingleTransportPayload::ref /* transportPayload */) { - return 0; -} - -JingleTransport::ref DefaultRemoteJingleTransportCandidateSelector::selectTransport(JingleTransportPayload::ref /* transportPayload */) { - return JingleTransport::ref(); -} - -} |