Index: content/renderer/p2p/socket_dispatcher.cc |
diff --git a/content/renderer/p2p/socket_dispatcher.cc b/content/renderer/p2p/socket_dispatcher.cc |
index 43c9de374c506e6182dccfb259308c4c93a9768c..ba00e99ae8ee58edf497b849052a3304a9ea772b 100644 |
--- a/content/renderer/p2p/socket_dispatcher.cc |
+++ b/content/renderer/p2p/socket_dispatcher.cc |
@@ -6,6 +6,8 @@ |
#include "base/message_loop_proxy.h" |
#include "content/common/p2p_messages.h" |
+#include "content/renderer/p2p/host_address_request.h" |
+#include "content/renderer/p2p/socket_client.h" |
P2PSocketDispatcher::P2PSocketDispatcher(RenderView* render_view) |
: RenderViewObserver(render_view), |
@@ -42,6 +44,7 @@ bool P2PSocketDispatcher::OnMessageReceived(const IPC::Message& message) { |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(P2PSocketDispatcher, message) |
IPC_MESSAGE_HANDLER(P2PMsg_NetworkListChanged, OnNetworkListChanged) |
+ IPC_MESSAGE_HANDLER(P2PMsg_GetHostAddressResult, OnGetHostAddressResult) |
IPC_MESSAGE_HANDLER(P2PMsg_OnSocketCreated, OnSocketCreated) |
IPC_MESSAGE_HANDLER(P2PMsg_OnIncomingTcpConnection, OnIncomingTcpConnection) |
IPC_MESSAGE_HANDLER(P2PMsg_OnError, OnError) |
@@ -51,6 +54,10 @@ bool P2PSocketDispatcher::OnMessageReceived(const IPC::Message& message) { |
return handled; |
} |
+base::MessageLoopProxy* P2PSocketDispatcher::message_loop() { |
+ return message_loop_; |
+} |
+ |
int P2PSocketDispatcher::RegisterClient(P2PSocketClient* client) { |
return clients_.Add(client); |
} |
@@ -64,8 +71,13 @@ void P2PSocketDispatcher::SendP2PMessage(IPC::Message* msg) { |
Send(msg); |
} |
-base::MessageLoopProxy* P2PSocketDispatcher::message_loop() { |
- return message_loop_; |
+int P2PSocketDispatcher::RegisterHostAddressRequest( |
+ P2PHostAddressRequest* request) { |
+ return host_address_requests_.Add(request); |
+} |
+ |
+void P2PSocketDispatcher::UnregisterHostAddressRequest(int id) { |
+ host_address_requests_.Remove(id); |
} |
void P2PSocketDispatcher::OnNetworkListChanged( |
@@ -74,6 +86,18 @@ void P2PSocketDispatcher::OnNetworkListChanged( |
networks); |
} |
+void P2PSocketDispatcher::OnGetHostAddressResult( |
+ int32 request_id, |
+ const net::IPAddressNumber& address) { |
+ P2PHostAddressRequest* request = host_address_requests_.Lookup(request_id); |
+ if (!request) { |
+ VLOG(1) << "Received P2P message for socket that doesn't exist."; |
+ return; |
+ } |
+ |
+ request->OnResponse(address); |
+} |
+ |
void P2PSocketDispatcher::OnSocketCreated( |
int socket_id, const net::IPEndPoint& address) { |
P2PSocketClient* client = GetClient(socket_id); |