1 // Copyright (c) 2012 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_CPP_PRIVATE_TCP_SOCKET_PRIVATE_H_ 6 #define PPAPI_CPP_PRIVATE_TCP_SOCKET_PRIVATE_H_ 7 8 #include "ppapi/c/pp_stdint.h" 9 #include "ppapi/c/private/ppb_tcp_socket_private.h" 10 #include "ppapi/cpp/pass_ref.h" 11 #include "ppapi/cpp/private/x509_certificate_private.h" 12 #include "ppapi/cpp/resource.h" 13 14 namespace pp { 15 16 class CompletionCallback; 17 class InstanceHandle; 18 19 class TCPSocketPrivate : public Resource { 20 public: 21 explicit TCPSocketPrivate(const InstanceHandle& instance); 22 23 TCPSocketPrivate(PassRef, PP_Resource resource); 24 25 // Returns true if the required interface is available. 26 static bool IsAvailable(); 27 28 int32_t Connect(const char* host, 29 uint16_t port, 30 const CompletionCallback& callback); 31 int32_t ConnectWithNetAddress(const PP_NetAddress_Private* addr, 32 const CompletionCallback& callback); 33 bool GetLocalAddress(PP_NetAddress_Private* local_addr); 34 bool GetRemoteAddress(PP_NetAddress_Private* remote_addr); 35 int32_t SSLHandshake(const char* server_name, 36 uint16_t server_port, 37 const CompletionCallback& callback); 38 X509CertificatePrivate GetServerCertificate(); 39 bool AddChainBuildingCertificate(const X509CertificatePrivate& cert, 40 bool trusted); 41 42 int32_t Read(char* buffer, 43 int32_t bytes_to_read, 44 const CompletionCallback& callback); 45 int32_t Write(const char* buffer, 46 int32_t bytes_to_write, 47 const CompletionCallback& callback); 48 void Disconnect(); 49 int32_t SetOption(PP_TCPSocketOption_Private name, 50 const Var& value, 51 const CompletionCallback& callback); 52 }; 53 54 } // namespace pp 55 56 #endif // PPAPI_CPP_PRIVATE_TCP_SOCKET_PRIVATE_H_ 57