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 ~TCPSocketResource() override
;
29 // PluginResource overrides.
30 thunk::PPB_TCPSocket_API
* AsPPB_TCPSocket_API() override
;
32 // thunk::PPB_TCPSocket_API implementation.
33 int32_t Bind(PP_Resource addr
,
34 scoped_refptr
<TrackedCallback
> callback
) override
;
35 int32_t Connect(PP_Resource addr
,
36 scoped_refptr
<TrackedCallback
> callback
) override
;
37 PP_Resource
GetLocalAddress() override
;
38 PP_Resource
GetRemoteAddress() override
;
39 int32_t Read(char* buffer
,
40 int32_t bytes_to_read
,
41 scoped_refptr
<TrackedCallback
> callback
) override
;
42 int32_t Write(const char* buffer
,
43 int32_t bytes_to_write
,
44 scoped_refptr
<TrackedCallback
> callback
) override
;
45 int32_t Listen(int32_t backlog
,
46 scoped_refptr
<TrackedCallback
> callback
) override
;
47 int32_t Accept(PP_Resource
* accepted_tcp_socket
,
48 scoped_refptr
<TrackedCallback
> callback
) override
;
49 void Close() override
;
51 PP_TCPSocket_Option name
,
53 scoped_refptr
<TrackedCallback
> callback
) override
;
54 int32_t SetOption(PP_TCPSocket_Option name
,
56 scoped_refptr
<TrackedCallback
> callback
) override
;
58 // TCPSocketResourceBase implementation.
59 PP_Resource
CreateAcceptedSocket(
61 const PP_NetAddress_Private
& local_addr
,
62 const PP_NetAddress_Private
& remote_addr
) override
;
65 // C-tor used for accepted sockets.
66 TCPSocketResource(Connection connection
,
69 const PP_NetAddress_Private
& local_addr
,
70 const PP_NetAddress_Private
& remote_addr
);
72 DISALLOW_COPY_AND_ASSIGN(TCPSocketResource
);
78 #endif // PPAPI_PROXY_TCP_SOCKET_RESOURCE_H_