diff options
Diffstat (limited to 'content/renderer/p2p/port_allocator.h')
-rw-r--r-- | content/renderer/p2p/port_allocator.h | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/content/renderer/p2p/port_allocator.h b/content/renderer/p2p/port_allocator.h index 0761ba2..fe5511a 100644 --- a/content/renderer/p2p/port_allocator.h +++ b/content/renderer/p2p/port_allocator.h @@ -8,17 +8,26 @@ #include "base/memory/ref_counted.h" #include "net/base/net_util.h" #include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebURLLoaderClient.h" #include "webkit/glue/p2p_transport.h" +namespace WebKit { +class WebFrame; +class WebURLLoader; +} // namespace WebKit + namespace content { class P2PHostAddressRequest; class P2PPortAllocatorSession; class P2PSocketDispatcher; -class P2PPortAllocator : public cricket::BasicPortAllocator{ +// TODO(sergeyu): There is overlap between this class and +// HttpPortAllocator. Refactor HttpPortAllocator +class P2PPortAllocator : public cricket::BasicPortAllocator { public: - P2PPortAllocator(P2PSocketDispatcher* socket_dispatcher, + P2PPortAllocator(WebKit::WebFrame* web_frame, + P2PSocketDispatcher* socket_dispatcher, talk_base::NetworkManager* network_manager, talk_base::PacketSocketFactory* socket_factory, const webkit_glue::P2PTransport::Config& config); @@ -31,13 +40,15 @@ class P2PPortAllocator : public cricket::BasicPortAllocator{ private: friend class P2PPortAllocatorSession; + WebKit::WebFrame* web_frame_; P2PSocketDispatcher* socket_dispatcher_; webkit_glue::P2PTransport::Config config_; DISALLOW_COPY_AND_ASSIGN(P2PPortAllocator); }; -class P2PPortAllocatorSession : public cricket::BasicPortAllocatorSession { +class P2PPortAllocatorSession : public cricket::BasicPortAllocatorSession, + public WebKit::WebURLLoaderClient { public: P2PPortAllocatorSession( P2PPortAllocator* allocator, @@ -45,6 +56,16 @@ class P2PPortAllocatorSession : public cricket::BasicPortAllocatorSession { const std::string& session_type); virtual ~P2PPortAllocatorSession(); + // WebKit::WebURLLoaderClient overrides. + virtual void didReceiveData(WebKit::WebURLLoader* loader, + const char* data, + int data_length, + int encoded_data_length) OVERRIDE; + virtual void didFinishLoading(WebKit::WebURLLoader* loader, + double finish_time) OVERRIDE; + virtual void didFail(WebKit::WebURLLoader* loader, + const WebKit::WebURLError& error) OVERRIDE; + protected: // Overrides for cricket::BasicPortAllocatorSession. virtual void GetPortConfigurations() OVERRIDE; @@ -53,9 +74,25 @@ class P2PPortAllocatorSession : public cricket::BasicPortAllocatorSession { void ResolveStunServerAddress(); void OnStunServerAddress(const net::IPAddressNumber& address); + void AllocateRelaySession(); + void ParseRelayResponse(); + + void AddConfig(); + P2PPortAllocator* allocator_; scoped_refptr<P2PHostAddressRequest> stun_address_request_; + talk_base::SocketAddress stun_server_address_; + + scoped_ptr<WebKit::WebURLLoader> relay_session_request_; + int relay_session_attemtps_; + std::string relay_session_response_; + std::string relay_username_; + std::string relay_password_; + talk_base::SocketAddress relay_ip_; + int relay_udp_port_; + int relay_tcp_port_; + int relay_ssltcp_port_; DISALLOW_COPY_AND_ASSIGN(P2PPortAllocatorSession); }; |