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