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 CHROME_BROWSER_EXTENSIONS_API_SOCKETS_UDP_SOCKETS_UDP_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_SOCKETS_UDP_SOCKETS_UDP_API_H_
8 #include "chrome/browser/extensions/api/socket/socket_api.h"
9 #include "chrome/common/extensions/api/sockets_udp.h"
11 namespace extensions {
12 class ResumableUDPSocket;
15 namespace extensions {
18 class UDPSocketEventDispatcher;
20 class UDPSocketAsyncApiFunction : public SocketAsyncApiFunction {
22 virtual ~UDPSocketAsyncApiFunction();
24 virtual scoped_ptr<SocketResourceManagerInterface>
25 CreateSocketResourceManager() OVERRIDE;
27 ResumableUDPSocket* GetUdpSocket(int socket_id);
30 class UDPSocketExtensionWithDnsLookupFunction
31 : public SocketExtensionWithDnsLookupFunction {
33 virtual ~UDPSocketExtensionWithDnsLookupFunction();
35 virtual scoped_ptr<SocketResourceManagerInterface>
36 CreateSocketResourceManager() OVERRIDE;
38 ResumableUDPSocket* GetUdpSocket(int socket_id);
41 class SocketsUdpCreateFunction : public UDPSocketAsyncApiFunction {
43 DECLARE_EXTENSION_FUNCTION("sockets.udp.create", SOCKETS_UDP_CREATE)
45 SocketsUdpCreateFunction();
48 virtual ~SocketsUdpCreateFunction();
51 virtual bool Prepare() OVERRIDE;
52 virtual void Work() OVERRIDE;
55 FRIEND_TEST_ALL_PREFIXES(SocketsUdpUnitTest, Create);
56 scoped_ptr<sockets_udp::Create::Params> params_;
59 class SocketsUdpUpdateFunction : public UDPSocketAsyncApiFunction {
61 DECLARE_EXTENSION_FUNCTION("sockets.udp.update", SOCKETS_UDP_UPDATE)
63 SocketsUdpUpdateFunction();
66 virtual ~SocketsUdpUpdateFunction();
69 virtual bool Prepare() OVERRIDE;
70 virtual void Work() OVERRIDE;
73 scoped_ptr<sockets_udp::Update::Params> params_;
76 class SocketsUdpBindFunction : public UDPSocketAsyncApiFunction {
78 DECLARE_EXTENSION_FUNCTION("sockets.udp.bind", SOCKETS_UDP_BIND)
80 SocketsUdpBindFunction();
83 virtual ~SocketsUdpBindFunction();
86 virtual bool Prepare() OVERRIDE;
87 virtual void Work() OVERRIDE;
90 scoped_ptr<sockets_udp::Bind::Params> params_;
91 UDPSocketEventDispatcher* socket_event_dispatcher_;
94 class SocketsUdpSendFunction : public UDPSocketExtensionWithDnsLookupFunction {
96 DECLARE_EXTENSION_FUNCTION("sockets.udp.send", SOCKETS_UDP_SEND)
98 SocketsUdpSendFunction();
101 virtual ~SocketsUdpSendFunction();
104 virtual bool Prepare() OVERRIDE;
105 virtual void AsyncWorkStart() OVERRIDE;
106 void OnCompleted(int net_result);
107 void SetSendResult(int net_result, int bytes_sent);
109 // SocketExtensionWithDnsLookupFunction:
110 virtual void AfterDnsLookup(int lookup_result) OVERRIDE;
115 scoped_ptr<sockets_udp::Send::Params> params_;
116 scoped_refptr<net::IOBuffer> io_buffer_;
117 size_t io_buffer_size_;
120 class SocketsUdpCloseFunction : public UDPSocketAsyncApiFunction {
122 DECLARE_EXTENSION_FUNCTION("sockets.udp.close", SOCKETS_UDP_CLOSE)
124 SocketsUdpCloseFunction();
127 virtual ~SocketsUdpCloseFunction();
130 virtual bool Prepare() OVERRIDE;
131 virtual void Work() OVERRIDE;
134 scoped_ptr<sockets_udp::Close::Params> params_;
137 class SocketsUdpGetInfoFunction : public UDPSocketAsyncApiFunction {
139 DECLARE_EXTENSION_FUNCTION("sockets.udp.getInfo", SOCKETS_UDP_GETINFO)
141 SocketsUdpGetInfoFunction();
144 virtual ~SocketsUdpGetInfoFunction();
147 virtual bool Prepare() OVERRIDE;
148 virtual void Work() OVERRIDE;
151 scoped_ptr<sockets_udp::GetInfo::Params> params_;
154 class SocketsUdpGetSocketsFunction : public UDPSocketAsyncApiFunction {
156 DECLARE_EXTENSION_FUNCTION("sockets.udp.getSockets", SOCKETS_UDP_GETSOCKETS)
158 SocketsUdpGetSocketsFunction();
161 virtual ~SocketsUdpGetSocketsFunction();
164 virtual bool Prepare() OVERRIDE;
165 virtual void Work() OVERRIDE;
168 class SocketsUdpJoinGroupFunction : public UDPSocketAsyncApiFunction {
170 DECLARE_EXTENSION_FUNCTION("sockets.udp.joinGroup", SOCKETS_UDP_JOINGROUP)
172 SocketsUdpJoinGroupFunction();
175 virtual ~SocketsUdpJoinGroupFunction();
178 virtual bool Prepare() OVERRIDE;
179 virtual void Work() OVERRIDE;
182 scoped_ptr<sockets_udp::JoinGroup::Params> params_;
185 class SocketsUdpLeaveGroupFunction : public UDPSocketAsyncApiFunction {
187 DECLARE_EXTENSION_FUNCTION("sockets.udp.leaveGroup", SOCKETS_UDP_LEAVEGROUP)
189 SocketsUdpLeaveGroupFunction();
192 virtual ~SocketsUdpLeaveGroupFunction();
195 virtual bool Prepare() OVERRIDE;
196 virtual void Work() OVERRIDE;
199 scoped_ptr<sockets_udp::LeaveGroup::Params> params_;
202 class SocketsUdpSetMulticastTimeToLiveFunction
203 : public UDPSocketAsyncApiFunction {
205 DECLARE_EXTENSION_FUNCTION("sockets.udp.setMulticastTimeToLive",
206 SOCKETS_UDP_SETMULTICASTTIMETOLIVE)
208 SocketsUdpSetMulticastTimeToLiveFunction();
211 virtual ~SocketsUdpSetMulticastTimeToLiveFunction();
214 virtual bool Prepare() OVERRIDE;
215 virtual void Work() OVERRIDE;
218 scoped_ptr<sockets_udp::SetMulticastTimeToLive::Params> params_;
221 class SocketsUdpSetMulticastLoopbackModeFunction
222 : public UDPSocketAsyncApiFunction {
224 DECLARE_EXTENSION_FUNCTION("sockets.udp.setMulticastLoopbackMode",
225 SOCKETS_UDP_SETMULTICASTLOOPBACKMODE)
227 SocketsUdpSetMulticastLoopbackModeFunction();
230 virtual ~SocketsUdpSetMulticastLoopbackModeFunction();
233 virtual bool Prepare() OVERRIDE;
234 virtual void Work() OVERRIDE;
237 scoped_ptr<sockets_udp::SetMulticastLoopbackMode::Params> params_;
240 class SocketsUdpGetJoinedGroupsFunction : public UDPSocketAsyncApiFunction {
242 DECLARE_EXTENSION_FUNCTION("sockets.udp.getJoinedGroups",
243 SOCKETS_UDP_GETJOINEDGROUPS)
245 SocketsUdpGetJoinedGroupsFunction();
248 virtual ~SocketsUdpGetJoinedGroupsFunction();
251 virtual bool Prepare() OVERRIDE;
252 virtual void Work() OVERRIDE;
255 scoped_ptr<sockets_udp::GetJoinedGroups::Params> params_;
259 } // namespace extensions
261 #endif // CHROME_BROWSER_EXTENSIONS_API_SOCKETS_UDP_SOCKETS_UDP_API_H_