1424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#ifndef PPAPI_PROXY_TCP_SOCKET_PRIVATE_RESOURCE_H_ 6424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#define PPAPI_PROXY_TCP_SOCKET_PRIVATE_RESOURCE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/basictypes.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 10424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "ppapi/proxy/tcp_socket_resource_base.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/ppb_tcp_socket_private_api.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi { 14424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace proxy { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class PPAPI_PROXY_EXPORT TCPSocketPrivateResource 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : public thunk::PPB_TCPSocket_Private_API, 18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) public TCPSocketResourceBase { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 20424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // C-tor used for new sockets. 21424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) TCPSocketPrivateResource(Connection connection, PP_Instance instance); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // C-tor used for already accepted sockets. 24424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) TCPSocketPrivateResource(Connection connection, 25424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) PP_Instance instance, 26424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) int pending_resource_id, 27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const PP_NetAddress_Private& local_addr, 28424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const PP_NetAddress_Private& remote_addr); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual ~TCPSocketPrivateResource(); 31424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // PluginResource overrides. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PPB_TCPSocket_Private_API* AsPPB_TCPSocket_Private_API() OVERRIDE; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PPB_TCPSocket_Private_API implementation. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int32_t Connect(const char* host, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint16_t port, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<TrackedCallback> callback) OVERRIDE; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int32_t ConnectWithNetAddress( 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PP_NetAddress_Private* addr, 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<TrackedCallback> callback) OVERRIDE; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PP_Bool GetLocalAddress(PP_NetAddress_Private* local_addr) OVERRIDE; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PP_Bool GetRemoteAddress(PP_NetAddress_Private* remote_addr) OVERRIDE; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int32_t SSLHandshake( 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* server_name, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint16_t server_port, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<TrackedCallback> callback) OVERRIDE; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PP_Resource GetServerCertificate() OVERRIDE; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PP_Bool AddChainBuildingCertificate(PP_Resource certificate, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool trusted) OVERRIDE; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int32_t Read(char* buffer, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t bytes_to_read, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<TrackedCallback> callback) OVERRIDE; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int32_t Write(const char* buffer, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t bytes_to_write, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<TrackedCallback> callback) OVERRIDE; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Disconnect() OVERRIDE; 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual int32_t SetOption(PP_TCPSocketOption_Private name, 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const PP_Var& value, 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<TrackedCallback> callback) OVERRIDE; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // TCPSocketResourceBase implementation. 6368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual PP_Resource CreateAcceptedSocket( 6468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int pending_host_id, 6568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const PP_NetAddress_Private& local_addr, 6668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const PP_NetAddress_Private& remote_addr) OVERRIDE; 6768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private: 69424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TCPSocketPrivateResource); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} // namespace proxy 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ppapi 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#endif // PPAPI_PROXY_TCP_SOCKET_PRIVATE_RESOURCE_H_ 76