| Index: chrome/browser/extensions/api/dial/dial_service.h
|
| diff --git a/chrome/browser/extensions/api/dial/dial_service.h b/chrome/browser/extensions/api/dial/dial_service.h
|
| index fb9924d46a127fb07fd984298d78e0c897a61b73..71d3e65c92e988375461793fd8a0830d9b0f5267 100644
|
| --- a/chrome/browser/extensions/api/dial/dial_service.h
|
| +++ b/chrome/browser/extensions/api/dial/dial_service.h
|
| @@ -102,13 +102,16 @@ class DialServiceImpl : public DialService {
|
| private:
|
| virtual ~DialServiceImpl();
|
|
|
| - // Starts the flow to construct and send a discovery request.
|
| - void StartRequest();
|
| + // Starts the control flow for one discovery cycle.
|
| + void StartDiscovery();
|
|
|
| - // Establishes the UDP socket that is used for requests and responses, then
|
| - // sends a discovery request on the bound socket. Returns |true| if
|
| - // successful.
|
| - bool BindAndWriteSocket(const net::NetworkInterface& bind_interface);
|
| + // Establishes the UDP socket that is used for requests and responses,
|
| + // establishes a read callback on the socket, and sends the first discovery
|
| + // request. Returns true if successful.
|
| + bool BindSocketAndSendRequest(const net::IPAddressNumber& bind_ip_address);
|
| +
|
| + // Sends a single discovery request over the socket.
|
| + void SendOneRequest();
|
|
|
| // Callback invoked for socket writes.
|
| void OnSocketWrite(int result);
|
| @@ -161,6 +164,10 @@ class DialServiceImpl : public DialService {
|
| // The NetLog source for this service.
|
| net::NetLog::Source net_log_source_;
|
|
|
| + // NOTE(mfoltz): It would make this class cleaner to refactor most of the
|
| + // following state into its own |DiscoveryOperation| object that was managed
|
| + // by the DialServiceImpl object.
|
| +
|
| // Buffer for socket writes.
|
| scoped_refptr<net::StringIOBuffer> send_buffer_;
|
|
|
| @@ -182,18 +189,29 @@ class DialServiceImpl : public DialService {
|
| // The number of requests that have been sent in the current discovery.
|
| int num_requests_sent_;
|
|
|
| + // The maximum number of requests to send per discovery cycle.
|
| + int max_requests_;
|
| +
|
| // Timer for finishing discovery.
|
| base::OneShotTimer<DialServiceImpl> finish_timer_;
|
|
|
| // The delay for |finish_timer_|; how long to wait for discovery to finish.
|
| base::TimeDelta finish_delay_;
|
|
|
| + // Timer for sending multiple requests at fixed intervals.
|
| + base::RepeatingTimer<DialServiceImpl> request_timer_;
|
| +
|
| + // The delay for |request_timer_|; how long to wait between successive
|
| + // requests.
|
| + base::TimeDelta request_interval_;
|
| +
|
| // List of observers.
|
| ObserverList<Observer> observer_list_;
|
|
|
| // Thread checker.
|
| base::ThreadChecker thread_checker_;
|
|
|
| + FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestSendMultipleRequests);
|
| FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestOnDeviceDiscovered);
|
| FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestOnDiscoveryFinished);
|
| FRIEND_TEST_ALL_PREFIXES(DialServiceTest, TestOnDiscoveryRequest);
|
|
|