• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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.
4 
5 #ifndef EXTENSIONS_BROWSER_API_SOCKETS_TCP_SERVER_SOCKETS_TCP_SERVER_API_H_
6 #define EXTENSIONS_BROWSER_API_SOCKETS_TCP_SERVER_SOCKETS_TCP_SERVER_API_H_
7 
8 #include "extensions/browser/api/socket/socket_api.h"
9 #include "extensions/common/api/sockets_tcp_server.h"
10 
11 namespace extensions {
12 class ResumableTCPServerSocket;
13 }
14 
15 namespace extensions {
16 namespace core_api {
17 
18 class TCPServerSocketAsyncApiFunction : public SocketAsyncApiFunction {
19  protected:
20   virtual ~TCPServerSocketAsyncApiFunction();
21 
22   virtual scoped_ptr<SocketResourceManagerInterface>
23       CreateSocketResourceManager() OVERRIDE;
24 
25   ResumableTCPServerSocket* GetTcpSocket(int socket_id);
26 };
27 
28 class SocketsTcpServerCreateFunction : public TCPServerSocketAsyncApiFunction {
29  public:
30   DECLARE_EXTENSION_FUNCTION("sockets.tcpServer.create",
31                              SOCKETS_TCP_SERVER_CREATE)
32 
33   SocketsTcpServerCreateFunction();
34 
35  protected:
36   virtual ~SocketsTcpServerCreateFunction();
37 
38   // AsyncApiFunction:
39   virtual bool Prepare() OVERRIDE;
40   virtual void Work() OVERRIDE;
41 
42  private:
43   FRIEND_TEST_ALL_PREFIXES(SocketsTcpServerUnitTest, Create);
44   scoped_ptr<sockets_tcp_server::Create::Params> params_;
45 };
46 
47 class SocketsTcpServerUpdateFunction : public TCPServerSocketAsyncApiFunction {
48  public:
49   DECLARE_EXTENSION_FUNCTION("sockets.tcpServer.update",
50                              SOCKETS_TCP_SERVER_UPDATE)
51 
52   SocketsTcpServerUpdateFunction();
53 
54  protected:
55   virtual ~SocketsTcpServerUpdateFunction();
56 
57   // AsyncApiFunction:
58   virtual bool Prepare() OVERRIDE;
59   virtual void Work() OVERRIDE;
60 
61  private:
62   scoped_ptr<sockets_tcp_server::Update::Params> params_;
63 };
64 
65 class SocketsTcpServerSetPausedFunction
66     : public TCPServerSocketAsyncApiFunction {
67  public:
68   DECLARE_EXTENSION_FUNCTION("sockets.tcpServer.setPaused",
69                              SOCKETS_TCP_SERVER_SETPAUSED)
70 
71   SocketsTcpServerSetPausedFunction();
72 
73  protected:
74   virtual ~SocketsTcpServerSetPausedFunction();
75 
76   // AsyncApiFunction
77   virtual bool Prepare() OVERRIDE;
78   virtual void Work() OVERRIDE;
79 
80  private:
81   scoped_ptr<sockets_tcp_server::SetPaused::Params> params_;
82   TCPServerSocketEventDispatcher* socket_event_dispatcher_;
83 };
84 
85 class SocketsTcpServerListenFunction : public TCPServerSocketAsyncApiFunction {
86  public:
87   DECLARE_EXTENSION_FUNCTION("sockets.tcpServer.listen",
88                              SOCKETS_TCP_SERVER_LISTEN)
89 
90   SocketsTcpServerListenFunction();
91 
92  protected:
93   virtual ~SocketsTcpServerListenFunction();
94 
95   // AsyncApiFunction:
96   virtual bool Prepare() OVERRIDE;
97   virtual void Work() OVERRIDE;
98 
99  private:
100   scoped_ptr<sockets_tcp_server::Listen::Params> params_;
101   TCPServerSocketEventDispatcher* socket_event_dispatcher_;
102 };
103 
104 class SocketsTcpServerDisconnectFunction
105     : public TCPServerSocketAsyncApiFunction {
106  public:
107   DECLARE_EXTENSION_FUNCTION("sockets.tcpServer.disconnect",
108                              SOCKETS_TCP_SERVER_DISCONNECT)
109 
110   SocketsTcpServerDisconnectFunction();
111 
112  protected:
113   virtual ~SocketsTcpServerDisconnectFunction();
114 
115   // AsyncApiFunction:
116   virtual bool Prepare() OVERRIDE;
117   virtual void Work() OVERRIDE;
118 
119  private:
120   scoped_ptr<sockets_tcp_server::Disconnect::Params> params_;
121 };
122 
123 class SocketsTcpServerCloseFunction : public TCPServerSocketAsyncApiFunction {
124  public:
125   DECLARE_EXTENSION_FUNCTION("sockets.tcpServer.close",
126                              SOCKETS_TCP_SERVER_CLOSE)
127 
128   SocketsTcpServerCloseFunction();
129 
130  protected:
131   virtual ~SocketsTcpServerCloseFunction();
132 
133   // AsyncApiFunction:
134   virtual bool Prepare() OVERRIDE;
135   virtual void Work() OVERRIDE;
136 
137  private:
138   scoped_ptr<sockets_tcp_server::Close::Params> params_;
139 };
140 
141 class SocketsTcpServerGetInfoFunction : public TCPServerSocketAsyncApiFunction {
142  public:
143   DECLARE_EXTENSION_FUNCTION("sockets.tcpServer.getInfo",
144                              SOCKETS_TCP_SERVER_GETINFO)
145 
146   SocketsTcpServerGetInfoFunction();
147 
148  protected:
149   virtual ~SocketsTcpServerGetInfoFunction();
150 
151   // AsyncApiFunction:
152   virtual bool Prepare() OVERRIDE;
153   virtual void Work() OVERRIDE;
154 
155  private:
156   scoped_ptr<sockets_tcp_server::GetInfo::Params> params_;
157 };
158 
159 class SocketsTcpServerGetSocketsFunction
160     : public TCPServerSocketAsyncApiFunction {
161  public:
162   DECLARE_EXTENSION_FUNCTION("sockets.tcpServer.getSockets",
163                              SOCKETS_TCP_SERVER_GETSOCKETS)
164 
165   SocketsTcpServerGetSocketsFunction();
166 
167  protected:
168   virtual ~SocketsTcpServerGetSocketsFunction();
169 
170   // AsyncApiFunction:
171   virtual bool Prepare() OVERRIDE;
172   virtual void Work() OVERRIDE;
173 };
174 
175 }  // namespace core_api
176 }  // namespace extensions
177 
178 #endif  // EXTENSIONS_BROWSER_API_SOCKETS_TCP_SERVER_SOCKETS_TCP_SERVER_API_H_
179