15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_THUNK_PPB_TCP_SOCKET_PRIVATE_API_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_THUNK_PPB_TCP_SOCKET_PRIVATE_API_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/private/ppb_tcp_socket_private.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/ppapi_thunk_export.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TrackedCallback;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace thunk {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PPAPI_THUNK_EXPORT PPB_TCPSocket_Private_API {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~PPB_TCPSocket_Private_API() {}
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int32_t Connect(const char* host,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          uint16_t port,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          scoped_refptr<TrackedCallback> callback) = 0;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int32_t ConnectWithNetAddress(
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const PP_NetAddress_Private* addr,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      scoped_refptr<TrackedCallback> callback) = 0;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Bool GetLocalAddress(PP_NetAddress_Private* local_addr) = 0;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Bool GetRemoteAddress(PP_NetAddress_Private* remote_addr) = 0;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int32_t SSLHandshake(const char* server_name,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               uint16_t server_port,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               scoped_refptr<TrackedCallback> callback) = 0;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Resource GetServerCertificate() = 0;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PP_Bool AddChainBuildingCertificate(PP_Resource certificate,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                              PP_Bool trusted) = 0;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int32_t Read(char* buffer,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       int32_t bytes_to_read,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       scoped_refptr<TrackedCallback> callback) = 0;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int32_t Write(const char* buffer,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        int32_t bytes_to_write,
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        scoped_refptr<TrackedCallback> callback) = 0;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Disconnect() = 0;
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual int32_t SetOption(PP_TCPSocketOption_Private name,
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            const PP_Var& value,
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            scoped_refptr<TrackedCallback> callback) = 0;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace thunk
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ppapi
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // PPAPI_THUNK_PPB_TCP_SOCKET_PRIVATE_API_H_
52