17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file.
47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#ifndef PPAPI_THUNK_PPB_TCP_SOCKET_API_H_
67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#define PPAPI_THUNK_PPB_TCP_SOCKET_API_H_
77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/memory/ref_counted.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/ppb_tcp_socket.h"
107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ppapi/thunk/ppapi_thunk_export.h"
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace ppapi {
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class TrackedCallback;
157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace thunk {
177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class PPAPI_THUNK_EXPORT PPB_TCPSocket_API {
197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) public:
207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual ~PPB_TCPSocket_API() {}
217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual int32_t Bind(PP_Resource addr,
2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                       scoped_refptr<TrackedCallback> callback) = 0;
247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual int32_t Connect(PP_Resource addr,
257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                          scoped_refptr<TrackedCallback> callback) = 0;
267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual PP_Resource GetLocalAddress() = 0;
277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual PP_Resource GetRemoteAddress() = 0;
287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual int32_t Read(char* buffer,
297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                       int32_t bytes_to_read,
307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                       scoped_refptr<TrackedCallback> callback) = 0;
317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual int32_t Write(const char* buffer,
327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                        int32_t bytes_to_write,
337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                        scoped_refptr<TrackedCallback> callback) = 0;
3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual int32_t Listen(int32_t backlog,
3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                         scoped_refptr<TrackedCallback> callback) = 0;
3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual int32_t Accept(PP_Resource* accepted_tcp_socket,
3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                         scoped_refptr<TrackedCallback> callback) = 0;
387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual void Close() = 0;
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual int32_t SetOption(PP_TCPSocket_Option name,
407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                            const PP_Var& value,
417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                            scoped_refptr<TrackedCallback> callback) = 0;
427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)};
437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}  // namespace thunk
457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}  // namespace ppapi
467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif  // PPAPI_THUNK_PPB_TCP_SOCKET_API_H_
48