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

Side by Side Diff: chrome/browser/net/dns_master.h

Issue 14919: Platform cleanup in chrome/browser/net. (Closed)
Patch Set: Created 12 years 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/net/dns_global.cc ('k') | chrome/browser/net/dns_master.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 // A DnsMaster object is instantiated once in the browser 5 // A DnsMaster object is instantiated once in the browser
6 // process, and delivers DNS prefetch assignments (hostnames) 6 // process, and delivers DNS prefetch assignments (hostnames)
7 // to any of several DnsSlave objects. 7 // to any of several DnsSlave objects.
8 // Most hostname lists are sent out by renderer processes, and 8 // Most hostname lists are sent out by renderer processes, and
9 // involve lists of hostnames that *might* be used in the near 9 // involve lists of hostnames that *might* be used in the near
10 // future by the browsing user. The goal of this class is to 10 // future by the browsing user. The goal of this class is to
(...skipping 20 matching lines...) Expand all
31 namespace chrome_browser_net { 31 namespace chrome_browser_net {
32 32
33 class DnsSlave; 33 class DnsSlave;
34 34
35 typedef chrome_common_net::NameList NameList; 35 typedef chrome_common_net::NameList NameList;
36 typedef std::map<std::string, DnsHostInfo> Results; 36 typedef std::map<std::string, DnsHostInfo> Results;
37 37
38 class DnsMaster { 38 class DnsMaster {
39 public: 39 public:
40 // The number of slave processes that will do DNS prefetching 40 // The number of slave processes that will do DNS prefetching
41 static const int kSlaveCountMax = 8; 41 static const size_t kSlaveCountMax = 8;
42 42
43 explicit DnsMaster(base::TimeDelta shutdown_wait_time); 43 explicit DnsMaster(base::TimeDelta shutdown_wait_time);
44 44
45 ~DnsMaster() { 45 ~DnsMaster() {
46 if (!shutdown_) 46 if (!shutdown_)
47 ShutdownSlaves(); // Ensure we did our cleanup. 47 ShutdownSlaves(); // Ensure we did our cleanup.
48 } 48 }
49 49
50 // ShutdownSlaves() gets all spawned threads to terminate, closes 50 // ShutdownSlaves() gets all spawned threads to terminate, closes
51 // their handles, and deletes their DnsSlave instances. 51 // their handles, and deletes their DnsSlave instances.
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 return results_[hostname].resolve_duration(); 106 return results_[hostname].resolve_duration();
107 } 107 }
108 108
109 base::TimeDelta GetQueueDuration(const std::string hostname) { 109 base::TimeDelta GetQueueDuration(const std::string hostname) {
110 AutoLock auto_lock(lock_); 110 AutoLock auto_lock(lock_);
111 if (results_.find(hostname) == results_.end()) 111 if (results_.find(hostname) == results_.end())
112 return DnsHostInfo::kNullDuration; 112 return DnsHostInfo::kNullDuration;
113 return results_[hostname].queue_duration(); 113 return results_[hostname].queue_duration();
114 } 114 }
115 115
116 int running_slave_count() { 116 size_t running_slave_count() {
117 AutoLock auto_lock(lock_); 117 AutoLock auto_lock(lock_);
118 return running_slave_count_; 118 return running_slave_count_;
119 } 119 }
120 120
121 //---------------------------------------------------------------------------- 121 //----------------------------------------------------------------------------
122 // Methods below this line should only be called by slave processes. 122 // Methods below this line should only be called by slave processes.
123 123
124 // GetNextAssignment() gets the next hostname from queue for processing 124 // GetNextAssignment() gets the next hostname from queue for processing
125 // It is not meant to be public, and should only be used by the slave. 125 // It is not meant to be public, and should only be used by the slave.
126 // GetNextAssignment() waits on a condition variable if there are no more 126 // GetNextAssignment() waits on a condition variable if there are no more
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 164
165 // For each hostname that we might navigate to (that we've "learned about") 165 // For each hostname that we might navigate to (that we've "learned about")
166 // we have a Referrer list. Each Referrer list has all hostnames we need to 166 // we have a Referrer list. Each Referrer list has all hostnames we need to
167 // pre-resolve when there is a navigation to the orginial hostname. 167 // pre-resolve when there is a navigation to the orginial hostname.
168 Referrers referrers_; 168 Referrers referrers_;
169 169
170 // Signaling slaves to process elements in the queue, or to terminate, 170 // Signaling slaves to process elements in the queue, or to terminate,
171 // is done using ConditionVariables. 171 // is done using ConditionVariables.
172 ConditionVariable slaves_have_work_; 172 ConditionVariable slaves_have_work_;
173 173
174 int slave_count_; // Count of slave processes started. 174 size_t slave_count_; // Count of slave processes started.
175 int running_slave_count_; // Count of slaves process still running. 175 size_t running_slave_count_; // Count of slaves process still running.
176 176
177 // The following arrays are only initialized as 177 // The following arrays are only initialized as
178 // slave_count_ grows (up to the indicated max). 178 // slave_count_ grows (up to the indicated max).
179 DWORD thread_ids_[kSlaveCountMax]; 179 DWORD thread_ids_[kSlaveCountMax];
180 HANDLE thread_handles_[kSlaveCountMax]; 180 HANDLE thread_handles_[kSlaveCountMax];
181 DnsSlave* slaves_[kSlaveCountMax]; 181 DnsSlave* slaves_[kSlaveCountMax];
182 182
183 // shutdown_ is set to tell the slaves to terminate. 183 // shutdown_ is set to tell the slaves to terminate.
184 bool shutdown_; 184 bool shutdown_;
185 185
186 // The following is the maximum time the ShutdownSlaves method 186 // The following is the maximum time the ShutdownSlaves method
187 // will wait for all the slave processes to terminate. 187 // will wait for all the slave processes to terminate.
188 const base::TimeDelta kShutdownWaitTime_; 188 const base::TimeDelta kShutdownWaitTime_;
189 189
190 // A list of successful events resulting from pre-fetching. 190 // A list of successful events resulting from pre-fetching.
191 DnsHostInfo::DnsInfoTable cache_hits_; 191 DnsHostInfo::DnsInfoTable cache_hits_;
192 // A map of hosts that were evicted from our cache (after we prefetched them) 192 // A map of hosts that were evicted from our cache (after we prefetched them)
193 // and before the HTTP stack tried to look them up. 193 // and before the HTTP stack tried to look them up.
194 Results cache_eviction_map_; 194 Results cache_eviction_map_;
195 195
196 DISALLOW_COPY_AND_ASSIGN(DnsMaster); 196 DISALLOW_COPY_AND_ASSIGN(DnsMaster);
197 }; 197 };
198 198
199 } // namespace chrome_browser_net 199 } // namespace chrome_browser_net
200 200
201 #endif // CHROME_BROWSER_NET_DNS_MASTER_H_ 201 #endif // CHROME_BROWSER_NET_DNS_MASTER_H_
202 202
OLDNEW
« no previous file with comments | « chrome/browser/net/dns_global.cc ('k') | chrome/browser/net/dns_master.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698