Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Unified Diff: ppapi/proxy/ppb_tcp_socket_private_proxy.cc

Issue 9669038: Added out-of-process support for server sockets. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Sync. Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/proxy/ppb_tcp_socket_private_proxy.h ('k') | ppapi/proxy/resource_creation_proxy.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/proxy/ppb_tcp_socket_private_proxy.cc
diff --git a/ppapi/proxy/ppb_tcp_socket_private_proxy.cc b/ppapi/proxy/ppb_tcp_socket_private_proxy.cc
index 7e926647e89917a598f101b35de3d7590ff0f6f7..26cdfcf5495e0ac7d17979b4aba27ec117f05da7 100644
--- a/ppapi/proxy/ppb_tcp_socket_private_proxy.cc
+++ b/ppapi/proxy/ppb_tcp_socket_private_proxy.cc
@@ -26,7 +26,13 @@ IDToSocketMap* g_id_to_socket = NULL;
class TCPSocket : public TCPSocketPrivateImpl {
public:
+ // C-tor for new sockets.
TCPSocket(const HostResource& resource, uint32 socket_id);
+ // C-tor for already connected sockets.
+ TCPSocket(const HostResource& resource,
+ uint32 socket_id,
+ const PP_NetAddress_Private& local_addr,
+ const PP_NetAddress_Private& remote_addr);
virtual ~TCPSocket();
virtual void SendConnect(const std::string& host, uint16_t port) OVERRIDE;
@@ -52,6 +58,22 @@ TCPSocket::TCPSocket(const HostResource& resource, uint32 socket_id)
(*g_id_to_socket)[socket_id] = this;
}
+TCPSocket::TCPSocket(const HostResource& resource,
+ uint32 socket_id,
+ const PP_NetAddress_Private& local_addr,
+ const PP_NetAddress_Private& remote_addr)
+ : TCPSocketPrivateImpl(resource, socket_id) {
+ if (!g_id_to_socket)
+ g_id_to_socket = new IDToSocketMap();
+ DCHECK(g_id_to_socket->find(socket_id) == g_id_to_socket->end());
+
+ connection_state_ = CONNECTED;
+ local_addr_ = local_addr;
+ remote_addr_ = remote_addr;
+
+ (*g_id_to_socket)[socket_id] = this;
+}
+
TCPSocket::~TCPSocket() {
Disconnect();
}
@@ -121,6 +143,18 @@ PP_Resource PPB_TCPSocket_Private_Proxy::CreateProxyResource(
socket_id))->GetReference();
}
+// static
+PP_Resource PPB_TCPSocket_Private_Proxy::CreateProxyResourceForConnectedSocket(
+ PP_Instance instance,
+ uint32 socket_id,
+ const PP_NetAddress_Private& local_addr,
+ const PP_NetAddress_Private& remote_addr) {
+ return (new TCPSocket(HostResource::MakeInstanceOnly(instance),
+ socket_id,
+ local_addr,
+ remote_addr))->GetReference();
+}
+
bool PPB_TCPSocket_Private_Proxy::OnMessageReceived(const IPC::Message& msg) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(PPB_TCPSocket_Private_Proxy, msg)
« no previous file with comments | « ppapi/proxy/ppb_tcp_socket_private_proxy.h ('k') | ppapi/proxy/resource_creation_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698