Home | History | Annotate | Download | only in proxy
      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