Chromium Code Reviews| Index: ppapi/proxy/tcp_socket_resource_base.h |
| diff --git a/ppapi/shared_impl/tcp_socket_shared.h b/ppapi/proxy/tcp_socket_resource_base.h |
| similarity index 66% |
| rename from ppapi/shared_impl/tcp_socket_shared.h |
| rename to ppapi/proxy/tcp_socket_resource_base.h |
| index 20e8e515139d563887f77b67747f6c725017e270..3657f477b3e7a5f7de3decd5c2b96b6df1acc593 100644 |
| --- a/ppapi/shared_impl/tcp_socket_shared.h |
| +++ b/ppapi/proxy/tcp_socket_resource_base.h |
| @@ -2,17 +2,18 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef PPAPI_SHARED_IMPL_TCP_SOCKET_SHARED_H_ |
| -#define PPAPI_SHARED_IMPL_TCP_SOCKET_SHARED_H_ |
| +#ifndef PPAPI_PROXY_PPB_TCP_SOCKET_RESOURCE_BASE_H_ |
| +#define PPAPI_PROXY_PPB_TCP_SOCKET_RESOURCE_BASE_H_ |
| -#include <queue> |
|
yzshen1
2013/08/16 20:40:42
it is still needed, right?
ygorshenin1
2013/08/19 14:33:35
Done.
|
| #include <string> |
| #include <vector> |
| -#include "base/compiler_specific.h" |
| +#include "base/basictypes.h" |
| +#include "base/memory/ref_counted.h" |
| #include "ppapi/c/ppb_tcp_socket.h" |
| #include "ppapi/c/private/ppb_net_address_private.h" |
| -#include "ppapi/shared_impl/resource.h" |
| +#include "ppapi/proxy/plugin_resource.h" |
| +#include "ppapi/proxy/ppapi_proxy_export.h" |
| #include "ppapi/shared_impl/tracked_callback.h" |
| namespace ppapi { |
| @@ -21,9 +22,9 @@ class PPB_X509Certificate_Fields; |
| class PPB_X509Certificate_Private_Shared; |
| class SocketOptionData; |
| -// This class provides the shared implementation for both PPB_TCPSocket and |
| -// PPB_TCPSocket_Private. |
| -class PPAPI_SHARED_EXPORT TCPSocketShared { |
| +namespace proxy { |
| + |
| +class PPAPI_PROXY_EXPORT TCPSocketResourceBase : public PluginResource { |
| public: |
| // The maximum number of bytes that each PpapiHostMsg_PPBTCPSocket_Read |
| // message is allowed to request. |
| @@ -43,37 +44,6 @@ class PPAPI_SHARED_EXPORT TCPSocketShared { |
| // such a buffer size. |
| static const int32_t kMaxReceiveBufferSize; |
| - // Notifications on operations completion. |
| - void OnConnectCompleted(int32_t result, |
| - const PP_NetAddress_Private& local_addr, |
| - const PP_NetAddress_Private& remote_addr); |
| - void OnSSLHandshakeCompleted( |
| - bool succeeded, |
| - const PPB_X509Certificate_Fields& certificate_fields); |
| - void OnReadCompleted(int32_t result, const std::string& data); |
| - void OnWriteCompleted(int32_t result); |
| - void OnSetOptionCompleted(int32_t result); |
| - |
| - // Send functions that need to be implemented differently for the |
| - // proxied and non-proxied derived classes. |
| - virtual void SendConnect(const std::string& host, uint16_t port) = 0; |
| - virtual void SendConnectWithNetAddress(const PP_NetAddress_Private& addr) = 0; |
| - virtual void SendSSLHandshake( |
| - const std::string& server_name, |
| - uint16_t server_port, |
| - const std::vector<std::vector<char> >& trusted_certs, |
| - const std::vector<std::vector<char> >& untrusted_certs) = 0; |
| - virtual void SendRead(int32_t bytes_to_read) = 0; |
| - virtual void SendWrite(const std::string& buffer) = 0; |
| - virtual void SendDisconnect() = 0; |
| - virtual void SendSetOption(PP_TCPSocket_Option name, |
| - const SocketOptionData& value) = 0; |
| - |
| - virtual Resource* GetOwnerResource() = 0; |
| - |
| - // Used to override PP_Error codes received from the browser side. |
| - virtual int32_t OverridePPError(int32_t pp_error); |
| - |
| protected: |
| enum ConnectionState { |
| // Before a connection is successfully established (including a connect |
| @@ -88,8 +58,19 @@ class PPAPI_SHARED_EXPORT TCPSocketShared { |
| DISCONNECTED |
| }; |
| - TCPSocketShared(ResourceObjectType resource_type, uint32 socket_id); |
| - virtual ~TCPSocketShared(); |
| + // C-tor used for new sockets. |
| + TCPSocketResourceBase(Connection connection, |
| + PP_Instance instance, |
| + bool private_api); |
| + |
| + // C-tor used for already accepted sockets. |
| + TCPSocketResourceBase(Connection connection, |
| + PP_Instance instance, |
| + bool private_api, |
| + const PP_NetAddress_Private& local_addr, |
| + const PP_NetAddress_Private& remote_addr); |
| + |
| + virtual ~TCPSocketResourceBase(); |
| int32_t ConnectImpl(const char* host, |
| uint16_t port, |
| @@ -115,14 +96,20 @@ class PPAPI_SHARED_EXPORT TCPSocketShared { |
| const PP_Var& value, |
| scoped_refptr<TrackedCallback> callback); |
| - void Init(uint32 socket_id); |
| bool IsConnected() const; |
| void PostAbortIfNecessary(scoped_refptr<TrackedCallback>* callback); |
| - ResourceObjectType resource_type_; |
| - |
| - uint32 socket_id_; |
| - ConnectionState connection_state_; |
| + // IPC message handlers. |
| + void OnPluginMsgConnectReply(const ResourceMessageReplyParams& params, |
| + const PP_NetAddress_Private& local_addr, |
| + const PP_NetAddress_Private& remote_addr); |
| + void OnPluginMsgSSLHandshakeReply( |
| + const ResourceMessageReplyParams& params, |
| + const PPB_X509Certificate_Fields& certificate_fields); |
| + void OnPluginMsgReadReply(const ResourceMessageReplyParams& params, |
| + const std::string& data); |
| + void OnPluginMsgWriteReply(const ResourceMessageReplyParams& params); |
| + void OnPluginMsgSetOptionReply(const ResourceMessageReplyParams& params); |
| scoped_refptr<TrackedCallback> connect_callback_; |
| scoped_refptr<TrackedCallback> ssl_handshake_callback_; |
| @@ -130,6 +117,7 @@ class PPAPI_SHARED_EXPORT TCPSocketShared { |
| scoped_refptr<TrackedCallback> write_callback_; |
| std::queue<scoped_refptr<TrackedCallback> > set_option_callbacks_; |
| + ConnectionState connection_state_; |
| char* read_buffer_; |
| int32_t bytes_to_read_; |
| @@ -142,9 +130,14 @@ class PPAPI_SHARED_EXPORT TCPSocketShared { |
| std::vector<std::vector<char> > untrusted_certificates_; |
| private: |
| - DISALLOW_COPY_AND_ASSIGN(TCPSocketShared); |
| + void RunCallback(scoped_refptr<TrackedCallback> callback, int32_t pp_result); |
| + |
| + bool private_api_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(TCPSocketResourceBase); |
| }; |
| +} // namespace proxy |
| } // namespace ppapi |
| -#endif // PPAPI_SHARED_IMPL_TCP_SOCKET_SHARED_H_ |
| +#endif // PPAPI_PROXY_PPB_TCP_SOCKET_RESOURCE_BASE_H_ |