| Index: webrtc/p2p/client/connectivitychecker.h
|
| diff --git a/webrtc/p2p/client/connectivitychecker.h b/webrtc/p2p/client/connectivitychecker.h
|
| deleted file mode 100644
|
| index 427749e5b552fe2508d41628c10dcb649f8ffd04..0000000000000000000000000000000000000000
|
| --- a/webrtc/p2p/client/connectivitychecker.h
|
| +++ /dev/null
|
| @@ -1,281 +0,0 @@
|
| -/*
|
| - * Copyright 2011 The WebRTC Project Authors. All rights reserved.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license
|
| - * that can be found in the LICENSE file in the root of the source
|
| - * tree. An additional intellectual property rights grant can be found
|
| - * in the file PATENTS. All contributing project authors may
|
| - * be found in the AUTHORS file in the root of the source tree.
|
| - */
|
| -
|
| -#ifndef WEBRTC_P2P_CLIENT_CONNECTIVITYCHECKER_H_
|
| -#define WEBRTC_P2P_CLIENT_CONNECTIVITYCHECKER_H_
|
| -
|
| -#include <map>
|
| -#include <string>
|
| -
|
| -#include "webrtc/p2p/base/basicpacketsocketfactory.h"
|
| -#include "webrtc/p2p/client/httpportallocator.h"
|
| -#include "webrtc/base/basictypes.h"
|
| -#include "webrtc/base/messagehandler.h"
|
| -#include "webrtc/base/network.h"
|
| -#include "webrtc/base/proxyinfo.h"
|
| -#include "webrtc/base/scoped_ptr.h"
|
| -#include "webrtc/base/sigslot.h"
|
| -#include "webrtc/base/socketaddress.h"
|
| -
|
| -namespace rtc {
|
| -class AsyncHttpRequest;
|
| -class AutoDetectProxy;
|
| -class BasicPacketSocketFactory;
|
| -class NetworkManager;
|
| -class PacketSocketFactory;
|
| -class SignalThread;
|
| -class TestHttpPortAllocatorSession;
|
| -class Thread;
|
| -}
|
| -
|
| -namespace cricket {
|
| -class HttpPortAllocator;
|
| -class Port;
|
| -class PortAllocatorSession;
|
| -struct PortConfiguration;
|
| -class RelayPort;
|
| -class StunPort;
|
| -
|
| -// Contains details about a discovered firewall that are of interest
|
| -// when debugging call failures.
|
| -struct FirewallInfo {
|
| - std::string brand;
|
| - std::string model;
|
| -
|
| - // TODO: List of current port mappings.
|
| -};
|
| -
|
| -// Contains details about a specific connect attempt.
|
| -struct ConnectInfo {
|
| - ConnectInfo()
|
| - : rtt(-1), error(0) {}
|
| - // Time when the connection was initiated. Needed for calculating
|
| - // the round trip time.
|
| - uint32 start_time_ms;
|
| - // Round trip time in milliseconds or -1 for failed connection.
|
| - int32 rtt;
|
| - // Error code representing low level errors like socket errors.
|
| - int error;
|
| -};
|
| -
|
| -// Identifier for a network interface and proxy address pair.
|
| -struct NicId {
|
| - NicId(const rtc::IPAddress& ip,
|
| - const rtc::SocketAddress& proxy_address)
|
| - : ip(ip),
|
| - proxy_address(proxy_address) {
|
| - }
|
| - rtc::IPAddress ip;
|
| - rtc::SocketAddress proxy_address;
|
| -};
|
| -
|
| -// Comparator implementation identifying unique network interface and
|
| -// proxy address pairs.
|
| -class NicIdComparator {
|
| - public:
|
| - int compare(const NicId &first, const NicId &second) const {
|
| - if (first.ip == second.ip) {
|
| - // Compare proxy address.
|
| - if (first.proxy_address == second.proxy_address) {
|
| - return 0;
|
| - } else {
|
| - return first.proxy_address < second.proxy_address? -1 : 1;
|
| - }
|
| - }
|
| - return first.ip < second.ip ? -1 : 1;
|
| - }
|
| -
|
| - bool operator()(const NicId &first, const NicId &second) const {
|
| - return (compare(first, second) < 0);
|
| - }
|
| -};
|
| -
|
| -// Contains information of a network interface and proxy address pair.
|
| -struct NicInfo {
|
| - NicInfo() {}
|
| - rtc::IPAddress ip;
|
| - rtc::ProxyInfo proxy_info;
|
| - rtc::SocketAddress external_address;
|
| - ServerAddresses stun_server_addresses;
|
| - rtc::SocketAddress media_server_address;
|
| - ConnectInfo stun;
|
| - ConnectInfo http;
|
| - ConnectInfo https;
|
| - ConnectInfo udp;
|
| - ConnectInfo tcp;
|
| - ConnectInfo ssltcp;
|
| - FirewallInfo firewall;
|
| -};
|
| -
|
| -// Holds the result of the connectivity check.
|
| -class NicMap : public std::map<NicId, NicInfo, NicIdComparator> {
|
| -};
|
| -
|
| -class TestHttpPortAllocatorSession : public HttpPortAllocatorSession {
|
| - public:
|
| - TestHttpPortAllocatorSession(
|
| - HttpPortAllocator* allocator,
|
| - const std::string& content_name,
|
| - int component,
|
| - const std::string& ice_ufrag,
|
| - const std::string& ice_pwd,
|
| - const std::vector<rtc::SocketAddress>& stun_hosts,
|
| - const std::vector<std::string>& relay_hosts,
|
| - const std::string& relay_token,
|
| - const std::string& user_agent)
|
| - : HttpPortAllocatorSession(
|
| - allocator, content_name, component, ice_ufrag, ice_pwd, stun_hosts,
|
| - relay_hosts, relay_token, user_agent) {
|
| - }
|
| - void set_proxy(const rtc::ProxyInfo& proxy) {
|
| - proxy_ = proxy;
|
| - }
|
| -
|
| - void ConfigReady(PortConfiguration* config);
|
| -
|
| - void OnRequestDone(rtc::SignalThread* data);
|
| -
|
| - sigslot::signal4<const std::string&, const std::string&,
|
| - const PortConfiguration*,
|
| - const rtc::ProxyInfo&> SignalConfigReady;
|
| - sigslot::signal1<rtc::AsyncHttpRequest*> SignalRequestDone;
|
| -
|
| - private:
|
| - rtc::ProxyInfo proxy_;
|
| -};
|
| -
|
| -// Runs a request/response check on all network interface and proxy
|
| -// address combinations. The check is considered done either when all
|
| -// checks has been successful or when the check times out.
|
| -class ConnectivityChecker
|
| - : public rtc::MessageHandler, public sigslot::has_slots<> {
|
| - public:
|
| - ConnectivityChecker(rtc::Thread* worker,
|
| - const std::string& jid,
|
| - const std::string& session_id,
|
| - const std::string& user_agent,
|
| - const std::string& relay_token,
|
| - const std::string& connection);
|
| - virtual ~ConnectivityChecker();
|
| -
|
| - // Virtual for gMock.
|
| - virtual bool Initialize();
|
| - virtual void Start();
|
| -
|
| - // MessageHandler implementation.
|
| - virtual void OnMessage(rtc::Message *msg);
|
| -
|
| - // Instruct checker to stop and wait until that's done.
|
| - // Virtual for gMock.
|
| - virtual void Stop() {
|
| - worker_->Stop();
|
| - }
|
| -
|
| - const NicMap& GetResults() const {
|
| - return nics_;
|
| - }
|
| -
|
| - void set_timeout_ms(uint32 timeout) {
|
| - timeout_ms_ = timeout;
|
| - }
|
| -
|
| - void set_stun_address(const rtc::SocketAddress& stun_address) {
|
| - stun_address_ = stun_address;
|
| - }
|
| -
|
| - const std::string& connection() const {
|
| - return connection_;
|
| - }
|
| -
|
| - const std::string& jid() const {
|
| - return jid_;
|
| - }
|
| -
|
| - const std::string& session_id() const {
|
| - return session_id_;
|
| - }
|
| -
|
| - // Context: Main Thread. Signalled when the connectivity check is complete.
|
| - sigslot::signal1<ConnectivityChecker*> SignalCheckDone;
|
| -
|
| - protected:
|
| - // Can be overridden for test.
|
| - virtual rtc::NetworkManager* CreateNetworkManager() {
|
| - return new rtc::BasicNetworkManager();
|
| - }
|
| - virtual rtc::BasicPacketSocketFactory* CreateSocketFactory(
|
| - rtc::Thread* thread) {
|
| - return new rtc::BasicPacketSocketFactory(thread);
|
| - }
|
| - virtual HttpPortAllocator* CreatePortAllocator(
|
| - rtc::NetworkManager* network_manager,
|
| - const std::string& user_agent,
|
| - const std::string& relay_token);
|
| - virtual StunPort* CreateStunPort(
|
| - const std::string& username, const std::string& password,
|
| - const PortConfiguration* config, rtc::Network* network);
|
| - virtual RelayPort* CreateRelayPort(
|
| - const std::string& username, const std::string& password,
|
| - const PortConfiguration* config, rtc::Network* network);
|
| - virtual void InitiateProxyDetection();
|
| - virtual void SetProxyInfo(const rtc::ProxyInfo& info);
|
| - virtual rtc::ProxyInfo GetProxyInfo() const;
|
| -
|
| - rtc::Thread* worker() {
|
| - return worker_;
|
| - }
|
| -
|
| - private:
|
| - bool AddNic(const rtc::IPAddress& ip,
|
| - const rtc::SocketAddress& proxy_address);
|
| - void AllocatePorts();
|
| - void AllocateRelayPorts();
|
| - void CheckNetworks();
|
| - void CreateRelayPorts(
|
| - const std::string& username, const std::string& password,
|
| - const PortConfiguration* config, const rtc::ProxyInfo& proxy_info);
|
| -
|
| - // Must be called by the worker thread.
|
| - void CleanUp();
|
| -
|
| - void OnRequestDone(rtc::AsyncHttpRequest* request);
|
| - void OnRelayPortComplete(Port* port);
|
| - void OnStunPortComplete(Port* port);
|
| - void OnRelayPortError(Port* port);
|
| - void OnStunPortError(Port* port);
|
| - void OnNetworksChanged();
|
| - void OnProxyDetect(rtc::SignalThread* thread);
|
| - void OnConfigReady(
|
| - const std::string& username, const std::string& password,
|
| - const PortConfiguration* config, const rtc::ProxyInfo& proxy);
|
| - void OnConfigWithProxyReady(const PortConfiguration*);
|
| - void RegisterHttpStart(int port);
|
| - rtc::Thread* worker_;
|
| - std::string jid_;
|
| - std::string session_id_;
|
| - std::string user_agent_;
|
| - std::string relay_token_;
|
| - std::string connection_;
|
| - rtc::AutoDetectProxy* proxy_detect_;
|
| - rtc::scoped_ptr<rtc::NetworkManager> network_manager_;
|
| - rtc::scoped_ptr<rtc::BasicPacketSocketFactory> socket_factory_;
|
| - rtc::scoped_ptr<HttpPortAllocator> port_allocator_;
|
| - NicMap nics_;
|
| - std::vector<Port*> ports_;
|
| - std::vector<PortAllocatorSession*> sessions_;
|
| - uint32 timeout_ms_;
|
| - rtc::SocketAddress stun_address_;
|
| - rtc::Thread* main_;
|
| - bool started_;
|
| -};
|
| -
|
| -} // namespace cricket
|
| -
|
| -#endif // WEBRTC_P2P_CLIENT_CONNECTIVITYCHECKER_H_
|
|
|