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

Unified Diff: ppapi/proxy/tcp_socket_resource_base.h

Issue 22923014: TCPSockets are switched to the new Pepper proxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync. Created 7 years, 4 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
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_

Powered by Google App Engine
This is Rietveld 408576698