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

Unified Diff: ppapi/proxy/tcp_socket_resource_base.h

Issue 24195004: PPB_TCPSocket: add support for TCP server socket operations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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/tcp_socket_resource.cc ('k') | ppapi/proxy/tcp_socket_resource_base.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
};
« no previous file with comments | « ppapi/proxy/tcp_socket_resource.cc ('k') | ppapi/proxy/tcp_socket_resource_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698