Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1440)

Unified Diff: chrome/browser/media/router/discovery/dial/dial_registry.cc

Issue 2754703005: [Device Discovery] Make DialRegistry a Singleton (Closed)
Patch Set: make DialRegistry singleton Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
}

Powered by Google App Engine
This is Rietveld 408576698