diff options
author | wez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-22 11:17:08 +0000 |
---|---|---|
committer | wez@chromium.org <wez@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-22 11:17:08 +0000 |
commit | 466a583aa3b19736c510b0c10d481eb3787a6c8c (patch) | |
tree | 9f9951426645a7e60fc1153bb78bdd32ba6ab45a /ppapi/proxy | |
parent | 6601b6d4374c6d7e3ef93ff7ab79eb040ae71c02 (diff) | |
download | chromium_src-466a583aa3b19736c510b0c10d481eb3787a6c8c.zip chromium_src-466a583aa3b19736c510b0c10d481eb3787a6c8c.tar.gz chromium_src-466a583aa3b19736c510b0c10d481eb3787a6c8c.tar.bz2 |
Provide a way to disable Nagle's algorithm on Pepper TCP sockets.
This CL adds a SetSocketFeature() API to PPB_TCPSocket_Private, supporting one
option, to control Nagle's algorithim on the underlying socket.
BUG=170248
Review URL: https://chromiumcodereview.appspot.com/12220050
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184087 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy')
-rw-r--r-- | ppapi/proxy/ppapi_messages.h | 8 | ||||
-rw-r--r-- | ppapi/proxy/ppb_tcp_socket_private_proxy.cc | 23 | ||||
-rw-r--r-- | ppapi/proxy/ppb_tcp_socket_private_proxy.h | 3 |
3 files changed, 34 insertions, 0 deletions
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h index e1d496a..f27c803 100644 --- a/ppapi/proxy/ppapi_messages.h +++ b/ppapi/proxy/ppapi_messages.h @@ -674,6 +674,10 @@ IPC_MESSAGE_ROUTED4(PpapiMsg_PPBTCPSocket_WriteACK, uint32 /* socket_id */, bool /* succeeded */, int32_t /* bytes_written */) +IPC_MESSAGE_ROUTED3(PpapiMsg_PPBTCPSocket_SetBoolOptionACK, + uint32 /* plugin_dispatcher_id */, + uint32 /* socket_id */, + bool /* succeeded */) // PPB_URLLoader_Trusted IPC_MESSAGE_ROUTED1( @@ -1200,6 +1204,10 @@ IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBTCPSocket_Write, std::string /* data */) IPC_MESSAGE_CONTROL1(PpapiHostMsg_PPBTCPSocket_Disconnect, uint32 /* socket_id */) +IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBTCPSocket_SetBoolOption, + uint32 /* socket_id */, + uint32 /* name */, + bool /* value */) // UDPSocketPrivate. IPC_MESSAGE_CONTROL0(PpapiHostMsg_UDPSocketPrivate_Create) diff --git a/ppapi/proxy/ppb_tcp_socket_private_proxy.cc b/ppapi/proxy/ppb_tcp_socket_private_proxy.cc index 7f11b28..7f7fb78 100644 --- a/ppapi/proxy/ppb_tcp_socket_private_proxy.cc +++ b/ppapi/proxy/ppb_tcp_socket_private_proxy.cc @@ -46,6 +46,8 @@ class TCPSocket : public TCPSocketPrivateImpl { virtual void SendRead(int32_t bytes_to_read) OVERRIDE; virtual void SendWrite(const std::string& buffer) OVERRIDE; virtual void SendDisconnect() OVERRIDE; + virtual void SendSetBoolOption(PP_TCPSocketOption_Private name, + bool value) OVERRIDE; private: void SendToBrowser(IPC::Message* msg); @@ -116,6 +118,11 @@ void TCPSocket::SendDisconnect() { SendToBrowser(new PpapiHostMsg_PPBTCPSocket_Disconnect(socket_id_)); } +void TCPSocket::SendSetBoolOption(PP_TCPSocketOption_Private name, bool value) { + SendToBrowser( + new PpapiHostMsg_PPBTCPSocket_SetBoolOption(socket_id_, name, value)); +} + void TCPSocket::SendToBrowser(IPC::Message* msg) { PluginGlobals::Get()->GetBrowserSender()->Send(msg); } @@ -170,6 +177,8 @@ bool PPB_TCPSocket_Private_Proxy::OnMessageReceived(const IPC::Message& msg) { OnMsgSSLHandshakeACK) IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_ReadACK, OnMsgReadACK) IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_WriteACK, OnMsgWriteACK) + IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPSocket_SetBoolOptionACK, + OnMsgSetBoolOptionACK) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled; @@ -236,5 +245,19 @@ void PPB_TCPSocket_Private_Proxy::OnMsgWriteACK( iter->second->OnWriteCompleted(succeeded, bytes_written); } +void PPB_TCPSocket_Private_Proxy::OnMsgSetBoolOptionACK( + uint32 /* plugin_dispatcher_id */, + uint32 socket_id, + bool succeeded) { + if (!g_id_to_socket) { + NOTREACHED(); + return; + } + IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); + if (iter == g_id_to_socket->end()) + return; + iter->second->OnSetOptionCompleted(succeeded); +} + } // namespace proxy } // namespace ppapi diff --git a/ppapi/proxy/ppb_tcp_socket_private_proxy.h b/ppapi/proxy/ppb_tcp_socket_private_proxy.h index 4667216..ffceca7 100644 --- a/ppapi/proxy/ppb_tcp_socket_private_proxy.h +++ b/ppapi/proxy/ppb_tcp_socket_private_proxy.h @@ -57,6 +57,9 @@ class PPB_TCPSocket_Private_Proxy : public InterfaceProxy { uint32 socket_id, bool succeeded, int32_t bytes_written); + void OnMsgSetBoolOptionACK(uint32 plugin_dispatcher_id, + uint32 socket_id, + bool succeeded); DISALLOW_COPY_AND_ASSIGN(PPB_TCPSocket_Private_Proxy); }; |