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.
5 #ifndef PPAPI_PROXY_TCP_SOCKET_RESOURCE_H_
6 #define PPAPI_PROXY_TCP_SOCKET_RESOURCE_H_
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "ppapi/proxy/tcp_socket_resource_base.h"
11 #include "ppapi/thunk/ppb_tcp_socket_api.h"
15 enum TCPSocketVersion
;
19 class PPAPI_PROXY_EXPORT TCPSocketResource
: public thunk::PPB_TCPSocket_API
,
20 public TCPSocketResourceBase
{
22 // C-tor used for new sockets created.
23 TCPSocketResource(Connection connection
,
25 TCPSocketVersion version
);
27 virtual ~TCPSocketResource();
29 // PluginResource overrides.
30 virtual thunk::PPB_TCPSocket_API
* AsPPB_TCPSocket_API() OVERRIDE
;
32 // thunk::PPB_TCPSocket_API implementation.
33 virtual int32_t Bind(PP_Resource addr
,
34 scoped_refptr
<TrackedCallback
> callback
) OVERRIDE
;
35 virtual int32_t Connect(PP_Resource addr
,
36 scoped_refptr
<TrackedCallback
> callback
) OVERRIDE
;
37 virtual PP_Resource
GetLocalAddress() OVERRIDE
;
38 virtual PP_Resource
GetRemoteAddress() OVERRIDE
;
39 virtual int32_t Read(char* buffer
,
40 int32_t bytes_to_read
,
41 scoped_refptr
<TrackedCallback
> callback
) OVERRIDE
;
42 virtual int32_t Write(const char* buffer
,
43 int32_t bytes_to_write
,
44 scoped_refptr
<TrackedCallback
> callback
) OVERRIDE
;
45 virtual int32_t Listen(int32_t backlog
,
46 scoped_refptr
<TrackedCallback
> callback
) OVERRIDE
;
47 virtual int32_t Accept(PP_Resource
* accepted_tcp_socket
,
48 scoped_refptr
<TrackedCallback
> callback
) OVERRIDE
;
49 virtual void Close() OVERRIDE
;
50 virtual int32_t SetOption(PP_TCPSocket_Option name
,
52 scoped_refptr
<TrackedCallback
> callback
) OVERRIDE
;
54 // TCPSocketResourceBase implementation.
55 virtual PP_Resource
CreateAcceptedSocket(
57 const PP_NetAddress_Private
& local_addr
,
58 const PP_NetAddress_Private
& remote_addr
) OVERRIDE
;
61 // C-tor used for accepted sockets.
62 TCPSocketResource(Connection connection
,
65 const PP_NetAddress_Private
& local_addr
,
66 const PP_NetAddress_Private
& remote_addr
);
68 DISALLOW_COPY_AND_ASSIGN(TCPSocketResource
);
74 #endif // PPAPI_PROXY_TCP_SOCKET_RESOURCE_H_