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#include "ppapi/proxy/tcp_socket_private_resource.h" 6 7#include "ppapi/proxy/ppapi_messages.h" 8#include "ppapi/shared_impl/ppb_tcp_socket_shared.h" 9 10namespace ppapi { 11namespace proxy { 12 13TCPSocketPrivateResource::TCPSocketPrivateResource(Connection connection, 14 PP_Instance instance) 15 : TCPSocketResourceBase(connection, instance, TCP_SOCKET_VERSION_PRIVATE) { 16 SendCreate(BROWSER, PpapiHostMsg_TCPSocket_CreatePrivate()); 17} 18 19TCPSocketPrivateResource::TCPSocketPrivateResource( 20 Connection connection, 21 PP_Instance instance, 22 int pending_resource_id, 23 const PP_NetAddress_Private& local_addr, 24 const PP_NetAddress_Private& remote_addr) 25 : TCPSocketResourceBase(connection, instance, TCP_SOCKET_VERSION_PRIVATE, 26 local_addr, remote_addr) { 27 AttachToPendingHost(BROWSER, pending_resource_id); 28} 29 30TCPSocketPrivateResource::~TCPSocketPrivateResource() { 31} 32 33thunk::PPB_TCPSocket_Private_API* 34TCPSocketPrivateResource::AsPPB_TCPSocket_Private_API() { 35 return this; 36} 37 38int32_t TCPSocketPrivateResource::Connect( 39 const char* host, 40 uint16_t port, 41 scoped_refptr<TrackedCallback> callback) { 42 return ConnectImpl(host, port, callback); 43} 44 45int32_t TCPSocketPrivateResource::ConnectWithNetAddress( 46 const PP_NetAddress_Private* addr, 47 scoped_refptr<TrackedCallback> callback) { 48 return ConnectWithNetAddressImpl(addr, callback); 49} 50 51PP_Bool TCPSocketPrivateResource::GetLocalAddress( 52 PP_NetAddress_Private* local_addr) { 53 return GetLocalAddressImpl(local_addr); 54} 55 56PP_Bool TCPSocketPrivateResource::GetRemoteAddress( 57 PP_NetAddress_Private* remote_addr) { 58 return GetRemoteAddressImpl(remote_addr); 59} 60 61int32_t TCPSocketPrivateResource::SSLHandshake( 62 const char* server_name, 63 uint16_t server_port, 64 scoped_refptr<TrackedCallback> callback) { 65 return SSLHandshakeImpl(server_name, server_port, callback); 66} 67 68PP_Resource TCPSocketPrivateResource::GetServerCertificate() { 69 return GetServerCertificateImpl(); 70} 71 72PP_Bool TCPSocketPrivateResource::AddChainBuildingCertificate( 73 PP_Resource certificate, 74 PP_Bool trusted) { 75 return AddChainBuildingCertificateImpl(certificate, trusted); 76} 77 78int32_t TCPSocketPrivateResource::Read( 79 char* buffer, 80 int32_t bytes_to_read, 81 scoped_refptr<TrackedCallback> callback) { 82 return ReadImpl(buffer, bytes_to_read, callback); 83} 84 85int32_t TCPSocketPrivateResource::Write( 86 const char* buffer, 87 int32_t bytes_to_write, 88 scoped_refptr<TrackedCallback> callback) { 89 return WriteImpl(buffer, bytes_to_write, callback); 90} 91 92void TCPSocketPrivateResource::Disconnect() { 93 CloseImpl(); 94} 95 96int32_t TCPSocketPrivateResource::SetOption( 97 PP_TCPSocketOption_Private name, 98 const PP_Var& value, 99 scoped_refptr<TrackedCallback> callback) { 100 switch (name) { 101 case PP_TCPSOCKETOPTION_PRIVATE_INVALID: 102 return PP_ERROR_BADARGUMENT; 103 case PP_TCPSOCKETOPTION_PRIVATE_NO_DELAY: 104 return SetOptionImpl(PP_TCPSOCKET_OPTION_NO_DELAY, value, callback); 105 default: 106 NOTREACHED(); 107 return PP_ERROR_BADARGUMENT; 108 } 109} 110 111PP_Resource TCPSocketPrivateResource::CreateAcceptedSocket( 112 int /* pending_host_id */, 113 const PP_NetAddress_Private& /* local_addr */, 114 const PP_NetAddress_Private& /* remote_addr */) { 115 NOTREACHED(); 116 return 0; 117} 118 119} // namespace proxy 120} // namespace ppapi 121