Chromium Code Reviews| Index: chrome/browser/media/router/discovery/dial/dial_registry.cc |
| diff --git a/chrome/browser/media/router/discovery/dial/dial_registry.cc b/chrome/browser/media/router/discovery/dial/dial_registry.cc |
| index 11def8ff1deac094bedd6abe13b14adcac4f6c08..604093206fa51b76d0e1a3da19d161c80b3dd85f 100644 |
| --- a/chrome/browser/media/router/discovery/dial/dial_registry.cc |
| +++ b/chrome/browser/media/router/discovery/dial/dial_registry.cc |
| @@ -24,28 +24,46 @@ using base::TimeDelta; |
| using content::BrowserThread; |
| using net::NetworkChangeNotifier; |
| +namespace { |
| + |
| +// How often to poll for devices. |
| +const int kDialRefreshIntervalSecs = 120; |
| + |
| +// We prune a device if it does not respond after this time. |
| +const int kDialExpirationSecs = 240; |
| + |
| +// The maximum number of devices retained at once in the registry. |
| +const size_t kDialMaxDevices = 256; |
| + |
| +} // namespace |
| + |
| namespace media_router { |
| -DialRegistry::DialRegistry(base::TimeDelta refresh_interval, |
| - base::TimeDelta expiration, |
| - const size_t max_devices) |
| +DialRegistry::DialRegistry() |
| : num_listeners_(0), |
| registry_generation_(0), |
| last_event_registry_generation_(0), |
| label_count_(0), |
| - refresh_interval_delta_(refresh_interval), |
| - expiration_delta_(expiration), |
| - max_devices_(max_devices) { |
| + refresh_interval_delta_( |
| + base::TimeDelta::FromSeconds(kDialRefreshIntervalSecs)), |
| + expiration_delta_(base::TimeDelta::FromSeconds(kDialExpirationSecs)), |
| + max_devices_(kDialMaxDevices) { |
| DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| DCHECK_GT(max_devices_, 0U); |
| NetworkChangeNotifier::AddNetworkChangeObserver(this); |
| } |
| DialRegistry::~DialRegistry() { |
| - DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| + // Singleton is destroyed on main thread. |
| NetworkChangeNotifier::RemoveNetworkChangeObserver(this); |
| } |
| +// static |
| +DialRegistry* DialRegistry::GetInstance() { |
| + DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| + return base::Singleton<DialRegistry>::get(); |
| +} |
| + |
| std::unique_ptr<DialService> DialRegistry::CreateDialService() { |
| DCHECK(g_browser_process->net_log()); |
| return base::MakeUnique<DialServiceImpl>(g_browser_process->net_log()); |
| @@ -154,8 +172,9 @@ void DialRegistry::StartPeriodicDiscovery() { |
| dial_ = CreateDialService(); |
| dial_->AddObserver(this); |
| DoDiscovery(); |
| - repeating_timer_.Start(FROM_HERE, refresh_interval_delta_, this, |
| - &DialRegistry::DoDiscovery); |
| + repeating_timer_.reset(new base::RepeatingTimer()); |
| + repeating_timer_->Start(FROM_HERE, refresh_interval_delta_, this, |
| + &DialRegistry::DoDiscovery); |
| } |
| void DialRegistry::DoDiscovery() { |
| @@ -170,7 +189,8 @@ void DialRegistry::StopPeriodicDiscovery() { |
| if (!dial_) |
| return; |
| - repeating_timer_.Stop(); |
| + repeating_timer_->Stop(); |
| + repeating_timer_.reset(); |
|
mark a. foltz
2017/03/22 18:37:25
Thanks for cleaning this up :)
|
| dial_->RemoveObserver(this); |
| ClearDialService(); |
| } |