1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef PPAPI_PROXY_TCP_SOCKET_PRIVATE_RESOURCE_H_ 6 #define PPAPI_PROXY_TCP_SOCKET_PRIVATE_RESOURCE_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "ppapi/proxy/tcp_socket_resource_base.h" 11 #include "ppapi/thunk/ppb_tcp_socket_private_api.h" 12 13 namespace ppapi { 14 namespace proxy { 15 16 class PPAPI_PROXY_EXPORT TCPSocketPrivateResource 17 : public thunk::PPB_TCPSocket_Private_API, 18 public TCPSocketResourceBase { 19 public: 20 // C-tor used for new sockets. 21 TCPSocketPrivateResource(Connection connection, PP_Instance instance); 22 23 // C-tor used for already accepted sockets. 24 TCPSocketPrivateResource(Connection connection, 25 PP_Instance instance, 26 int pending_resource_id, 27 const PP_NetAddress_Private& local_addr, 28 const PP_NetAddress_Private& remote_addr); 29 30 virtual ~TCPSocketPrivateResource(); 31 32 // PluginResource overrides. 33 virtual PPB_TCPSocket_Private_API* AsPPB_TCPSocket_Private_API() OVERRIDE; 34 35 // PPB_TCPSocket_Private_API implementation. 36 virtual int32_t Connect(const char* host, 37 uint16_t port, 38 scoped_refptr<TrackedCallback> callback) OVERRIDE; 39 virtual int32_t ConnectWithNetAddress( 40 const PP_NetAddress_Private* addr, 41 scoped_refptr<TrackedCallback> callback) OVERRIDE; 42 virtual PP_Bool GetLocalAddress(PP_NetAddress_Private* local_addr) OVERRIDE; 43 virtual PP_Bool GetRemoteAddress(PP_NetAddress_Private* remote_addr) OVERRIDE; 44 virtual int32_t SSLHandshake( 45 const char* server_name, 46 uint16_t server_port, 47 scoped_refptr<TrackedCallback> callback) OVERRIDE; 48 virtual PP_Resource GetServerCertificate() OVERRIDE; 49 virtual PP_Bool AddChainBuildingCertificate(PP_Resource certificate, 50 PP_Bool trusted) OVERRIDE; 51 virtual int32_t Read(char* buffer, 52 int32_t bytes_to_read, 53 scoped_refptr<TrackedCallback> callback) OVERRIDE; 54 virtual int32_t Write(const char* buffer, 55 int32_t bytes_to_write, 56 scoped_refptr<TrackedCallback> callback) OVERRIDE; 57 virtual void Disconnect() OVERRIDE; 58 virtual int32_t SetOption(PP_TCPSocketOption_Private name, 59 const PP_Var& value, 60 scoped_refptr<TrackedCallback> callback) OVERRIDE; 61 62 // TCPSocketResourceBase implementation. 63 virtual PP_Resource CreateAcceptedSocket( 64 int pending_host_id, 65 const PP_NetAddress_Private& local_addr, 66 const PP_NetAddress_Private& remote_addr) OVERRIDE; 67 68 private: 69 DISALLOW_COPY_AND_ASSIGN(TCPSocketPrivateResource); 70 }; 71 72 } // namespace proxy 73 } // namespace ppapi 74 75 #endif // PPAPI_PROXY_TCP_SOCKET_PRIVATE_RESOURCE_H_ 76