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_ |