OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_DIAL_DIAL_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_DIAL_DIAL_SERVICE_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_API_DIAL_DIAL_SERVICE_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_API_DIAL_DIAL_SERVICE_H_ |
7 | 7 |
| 8 #include <memory> |
8 #include <string> | 9 #include <string> |
9 #include <vector> | 10 #include <vector> |
10 | 11 |
11 #include "base/gtest_prod_util.h" | 12 #include "base/gtest_prod_util.h" |
12 #include "base/macros.h" | 13 #include "base/macros.h" |
13 #include "base/memory/scoped_ptr.h" | |
14 #include "base/memory/weak_ptr.h" | 14 #include "base/memory/weak_ptr.h" |
15 #include "base/observer_list.h" | 15 #include "base/observer_list.h" |
16 #include "base/threading/thread_checker.h" | 16 #include "base/threading/thread_checker.h" |
17 #include "base/timer/timer.h" | 17 #include "base/timer/timer.h" |
18 #include "net/base/ip_address.h" | 18 #include "net/base/ip_address.h" |
19 #include "net/log/net_log.h" | 19 #include "net/log/net_log.h" |
20 #include "net/udp/udp_socket.h" | 20 #include "net/udp/udp_socket.h" |
21 | 21 |
22 namespace net { | 22 namespace net { |
23 class IPEndPoint; | 23 class IPEndPoint; |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 void HandleResponse(int bytes_read); | 160 void HandleResponse(int bytes_read); |
161 | 161 |
162 // Parses a response into a DialDeviceData object. If the DIAL response is | 162 // Parses a response into a DialDeviceData object. If the DIAL response is |
163 // invalid or does not contain enough information, then the return | 163 // invalid or does not contain enough information, then the return |
164 // value will be false and |device| is not changed. | 164 // value will be false and |device| is not changed. |
165 static bool ParseResponse(const std::string& response, | 165 static bool ParseResponse(const std::string& response, |
166 const base::Time& response_time, | 166 const base::Time& response_time, |
167 DialDeviceData* device); | 167 DialDeviceData* device); |
168 | 168 |
169 // The UDP socket. | 169 // The UDP socket. |
170 scoped_ptr<net::UDPSocket> socket_; | 170 std::unique_ptr<net::UDPSocket> socket_; |
171 | 171 |
172 // Buffer for socket reads. | 172 // Buffer for socket reads. |
173 scoped_refptr<net::IOBufferWithSize> recv_buffer_; | 173 scoped_refptr<net::IOBufferWithSize> recv_buffer_; |
174 | 174 |
175 // The source of of the last socket read. | 175 // The source of of the last socket read. |
176 net::IPEndPoint recv_address_; | 176 net::IPEndPoint recv_address_; |
177 | 177 |
178 // Thread checker. | 178 // Thread checker. |
179 base::ThreadChecker thread_checker_; | 179 base::ThreadChecker thread_checker_; |
180 | 180 |
(...skipping 30 matching lines...) Expand all Loading... |
211 // |SendOneRequest()|, and start the timer to finish discovery if needed. | 211 // |SendOneRequest()|, and start the timer to finish discovery if needed. |
212 // The (Address family, interface index) of each address in |ip_addresses| | 212 // The (Address family, interface index) of each address in |ip_addresses| |
213 // must be unique. If |ip_address| is empty, calls |FinishDiscovery()|. | 213 // must be unique. If |ip_address| is empty, calls |FinishDiscovery()|. |
214 void DiscoverOnAddresses(const net::IPAddressList& ip_addresses); | 214 void DiscoverOnAddresses(const net::IPAddressList& ip_addresses); |
215 | 215 |
216 // Creates a DialSocket, binds it to |bind_ip_address| and if | 216 // Creates a DialSocket, binds it to |bind_ip_address| and if |
217 // successful, add the DialSocket to |dial_sockets_|. | 217 // successful, add the DialSocket to |dial_sockets_|. |
218 void BindAndAddSocket(const net::IPAddress& bind_ip_address); | 218 void BindAndAddSocket(const net::IPAddress& bind_ip_address); |
219 | 219 |
220 // Creates a DialSocket with callbacks to this object. | 220 // Creates a DialSocket with callbacks to this object. |
221 scoped_ptr<DialSocket> CreateDialSocket(); | 221 std::unique_ptr<DialSocket> CreateDialSocket(); |
222 | 222 |
223 // Sends a single discovery request to every socket that are currently open. | 223 // Sends a single discovery request to every socket that are currently open. |
224 void SendOneRequest(); | 224 void SendOneRequest(); |
225 | 225 |
226 // Notify observers that a discovery request was made. | 226 // Notify observers that a discovery request was made. |
227 void NotifyOnDiscoveryRequest(); | 227 void NotifyOnDiscoveryRequest(); |
228 | 228 |
229 // Notify observers a device has been discovered. | 229 // Notify observers a device has been discovered. |
230 void NotifyOnDeviceDiscovered(const DialDeviceData& device_data); | 230 void NotifyOnDeviceDiscovered(const DialDeviceData& device_data); |
231 | 231 |
232 // Notify observers that there has been an error with one of the DialSockets. | 232 // Notify observers that there has been an error with one of the DialSockets. |
233 void NotifyOnError(); | 233 void NotifyOnError(); |
234 | 234 |
235 // Called from finish_timer_ when we are done with the current round of | 235 // Called from finish_timer_ when we are done with the current round of |
236 // discovery. | 236 // discovery. |
237 void FinishDiscovery(); | 237 void FinishDiscovery(); |
238 | 238 |
239 // Returns |true| if there are open sockets. | 239 // Returns |true| if there are open sockets. |
240 bool HasOpenSockets(); | 240 bool HasOpenSockets(); |
241 | 241 |
242 // DialSockets for each network interface whose ip address was | 242 // DialSockets for each network interface whose ip address was |
243 // successfully bound. | 243 // successfully bound. |
244 std::vector<scoped_ptr<DialSocket>> dial_sockets_; | 244 std::vector<std::unique_ptr<DialSocket>> dial_sockets_; |
245 | 245 |
246 // The NetLog for this service. | 246 // The NetLog for this service. |
247 net::NetLog* net_log_; | 247 net::NetLog* net_log_; |
248 | 248 |
249 // The NetLog source for this service. | 249 // The NetLog source for this service. |
250 net::NetLog::Source net_log_source_; | 250 net::NetLog::Source net_log_source_; |
251 | 251 |
252 // The multicast address:port for search requests. | 252 // The multicast address:port for search requests. |
253 net::IPEndPoint send_address_; | 253 net::IPEndPoint send_address_; |
254 | 254 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestOnDeviceDiscovered); | 291 FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestOnDeviceDiscovered); |
292 FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestOnDiscoveryFinished); | 292 FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestOnDiscoveryFinished); |
293 FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestOnDiscoveryRequest); | 293 FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestOnDiscoveryRequest); |
294 FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestResponseParsing); | 294 FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestResponseParsing); |
295 DISALLOW_COPY_AND_ASSIGN(DialServiceImpl); | 295 DISALLOW_COPY_AND_ASSIGN(DialServiceImpl); |
296 }; | 296 }; |
297 | 297 |
298 } // namespace extensions | 298 } // namespace extensions |
299 | 299 |
300 #endif // CHROME_BROWSER_EXTENSIONS_API_DIAL_DIAL_SERVICE_H_ | 300 #endif // CHROME_BROWSER_EXTENSIONS_API_DIAL_DIAL_SERVICE_H_ |
OLD | NEW |