| Index: ppapi/proxy/tcp_socket_resource_base.h
|
| diff --git a/ppapi/proxy/tcp_socket_resource_base.h b/ppapi/proxy/tcp_socket_resource_base.h
|
| index 7e8a4818fa2f6be94fa86fb2777111aaaadc84ba..8835ab974b16dae180946e3cb76d7850ea901e3c 100644
|
| --- a/ppapi/proxy/tcp_socket_resource_base.h
|
| +++ b/ppapi/proxy/tcp_socket_resource_base.h
|
| @@ -15,6 +15,7 @@
|
| #include "ppapi/c/private/ppb_net_address_private.h"
|
| #include "ppapi/proxy/plugin_resource.h"
|
| #include "ppapi/proxy/ppapi_proxy_export.h"
|
| +#include "ppapi/shared_impl/ppb_tcp_socket_shared.h"
|
| #include "ppapi/shared_impl/tracked_callback.h"
|
|
|
| namespace ppapi {
|
| @@ -27,6 +28,7 @@ namespace proxy {
|
|
|
| class PPAPI_PROXY_EXPORT TCPSocketResourceBase : public PluginResource {
|
| public:
|
| + // TODO(yzshen): Move these constants to ppb_tcp_socket_shared.
|
| // The maximum number of bytes that each PpapiHostMsg_PPBTCPSocket_Read
|
| // message is allowed to request.
|
| static const int32_t kMaxReadSize;
|
| @@ -46,33 +48,28 @@ class PPAPI_PROXY_EXPORT TCPSocketResourceBase : public PluginResource {
|
| static const int32_t kMaxReceiveBufferSize;
|
|
|
| protected:
|
| - enum ConnectionState {
|
| - // Before a connection is successfully established (including a connect
|
| - // request is pending or a previous connect request failed).
|
| - BEFORE_CONNECT,
|
| - // A connection has been successfully established (including a request of
|
| - // initiating SSL is pending).
|
| - CONNECTED,
|
| - // An SSL connection has been successfully established.
|
| - SSL_CONNECTED,
|
| - // The connection has been ended.
|
| - DISCONNECTED
|
| - };
|
| -
|
| // C-tor used for new sockets.
|
| TCPSocketResourceBase(Connection connection,
|
| PP_Instance instance,
|
| - bool private_api);
|
| + TCPSocketVersion version);
|
|
|
| // C-tor used for already accepted sockets.
|
| TCPSocketResourceBase(Connection connection,
|
| PP_Instance instance,
|
| - bool private_api,
|
| + TCPSocketVersion version,
|
| const PP_NetAddress_Private& local_addr,
|
| const PP_NetAddress_Private& remote_addr);
|
|
|
| virtual ~TCPSocketResourceBase();
|
|
|
| + // Implemented by subclasses to create resources for accepted sockets.
|
| + virtual PP_Resource CreateAcceptedSocket(
|
| + int pending_host_id,
|
| + const PP_NetAddress_Private& local_addr,
|
| + const PP_NetAddress_Private& remote_addr) = 0;
|
| +
|
| + int32_t BindImpl(const PP_NetAddress_Private* addr,
|
| + scoped_refptr<TrackedCallback> callback);
|
| int32_t ConnectImpl(const char* host,
|
| uint16_t port,
|
| scoped_refptr<TrackedCallback> callback);
|
| @@ -92,15 +89,19 @@ class PPAPI_PROXY_EXPORT TCPSocketResourceBase : public PluginResource {
|
| int32_t WriteImpl(const char* buffer,
|
| int32_t bytes_to_write,
|
| scoped_refptr<TrackedCallback> callback);
|
| - void DisconnectImpl();
|
| + int32_t ListenImpl(int32_t backlog, scoped_refptr<TrackedCallback> callback);
|
| + int32_t AcceptImpl(PP_Resource* accepted_tcp_socket,
|
| + scoped_refptr<TrackedCallback> callback);
|
| + void CloseImpl();
|
| int32_t SetOptionImpl(PP_TCPSocket_Option name,
|
| const PP_Var& value,
|
| scoped_refptr<TrackedCallback> callback);
|
|
|
| - bool IsConnected() const;
|
| void PostAbortIfNecessary(scoped_refptr<TrackedCallback>* callback);
|
|
|
| // IPC message handlers.
|
| + void OnPluginMsgBindReply(const ResourceMessageReplyParams& params,
|
| + const PP_NetAddress_Private& local_addr);
|
| void OnPluginMsgConnectReply(const ResourceMessageReplyParams& params,
|
| const PP_NetAddress_Private& local_addr,
|
| const PP_NetAddress_Private& remote_addr);
|
| @@ -110,15 +111,23 @@ class PPAPI_PROXY_EXPORT TCPSocketResourceBase : public PluginResource {
|
| void OnPluginMsgReadReply(const ResourceMessageReplyParams& params,
|
| const std::string& data);
|
| void OnPluginMsgWriteReply(const ResourceMessageReplyParams& params);
|
| + void OnPluginMsgListenReply(const ResourceMessageReplyParams& params);
|
| + void OnPluginMsgAcceptReply(const ResourceMessageReplyParams& params,
|
| + int pending_host_id,
|
| + const PP_NetAddress_Private& local_addr,
|
| + const PP_NetAddress_Private& remote_addr);
|
| void OnPluginMsgSetOptionReply(const ResourceMessageReplyParams& params);
|
|
|
| + scoped_refptr<TrackedCallback> bind_callback_;
|
| scoped_refptr<TrackedCallback> connect_callback_;
|
| scoped_refptr<TrackedCallback> ssl_handshake_callback_;
|
| scoped_refptr<TrackedCallback> read_callback_;
|
| scoped_refptr<TrackedCallback> write_callback_;
|
| + scoped_refptr<TrackedCallback> listen_callback_;
|
| + scoped_refptr<TrackedCallback> accept_callback_;
|
| std::queue<scoped_refptr<TrackedCallback> > set_option_callbacks_;
|
|
|
| - ConnectionState connection_state_;
|
| + TCPSocketState state_;
|
| char* read_buffer_;
|
| int32_t bytes_to_read_;
|
|
|
| @@ -130,10 +139,12 @@ class PPAPI_PROXY_EXPORT TCPSocketResourceBase : public PluginResource {
|
| std::vector<std::vector<char> > trusted_certificates_;
|
| std::vector<std::vector<char> > untrusted_certificates_;
|
|
|
| + PP_Resource* accepted_tcp_socket_;
|
| +
|
| private:
|
| void RunCallback(scoped_refptr<TrackedCallback> callback, int32_t pp_result);
|
|
|
| - bool private_api_;
|
| + TCPSocketVersion version_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(TCPSocketResourceBase);
|
| };
|
|
|