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

Side by Side Diff: net/base/net_log.cc

Issue 16137008: Refactor net::NetLog to provide implementation of observer pattern, not just the interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: revert more Created 7 years, 6 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 unified diff | Download patch
OLDNEW
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 #include "net/base/net_log.h" 5 #include "net/base/net_log.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 180
181 NetLog::LogLevel NetLog::ThreadSafeObserver::log_level() const { 181 NetLog::LogLevel NetLog::ThreadSafeObserver::log_level() const {
182 DCHECK(net_log_); 182 DCHECK(net_log_);
183 return log_level_; 183 return log_level_;
184 } 184 }
185 185
186 NetLog* NetLog::ThreadSafeObserver::net_log() const { 186 NetLog* NetLog::ThreadSafeObserver::net_log() const {
187 return net_log_; 187 return net_log_;
188 } 188 }
189 189
190 NetLog::NetLog(LogLevel base_log_level)
191 : last_id_(0),
192 base_log_level_(base_log_level),
193 effective_log_level_(LOG_NONE) {
mmenke 2013/05/30 18:18:59 effective_log_level_ isn't being set correctly her
kouhei (in TOK) 2013/05/31 06:30:03 Done.
194 }
195
196 NetLog::~NetLog() {
197 }
198
190 void NetLog::AddGlobalEntry(EventType type) { 199 void NetLog::AddGlobalEntry(EventType type) {
191 AddEntry(type, 200 AddEntry(type,
192 Source(net::NetLog::SOURCE_NONE, NextID()), 201 Source(net::NetLog::SOURCE_NONE, NextID()),
193 net::NetLog::PHASE_NONE, 202 net::NetLog::PHASE_NONE,
194 NULL); 203 NULL);
195 } 204 }
196 205
197 void NetLog::AddGlobalEntry( 206 void NetLog::AddGlobalEntry(
198 EventType type, 207 EventType type,
199 const NetLog::ParametersCallback& parameters_callback) { 208 const NetLog::ParametersCallback& parameters_callback) {
200 AddEntry(type, 209 AddEntry(type,
201 Source(net::NetLog::SOURCE_NONE, NextID()), 210 Source(net::NetLog::SOURCE_NONE, NextID()),
202 net::NetLog::PHASE_NONE, 211 net::NetLog::PHASE_NONE,
203 &parameters_callback); 212 &parameters_callback);
204 } 213 }
205 214
215 uint32 NetLog::NextID() {
216 return base::subtle::NoBarrier_AtomicIncrement(&last_id_, 1);
217 }
218
219 NetLog::LogLevel NetLog::GetLogLevel() const {
220 base::subtle::Atomic32 log_level =
221 base::subtle::NoBarrier_Load(&effective_log_level_);
222 return static_cast<net::NetLog::LogLevel>(log_level);
223 }
224
225 void NetLog::AddThreadSafeObserver(
226 net::NetLog::ThreadSafeObserver* observer,
227 LogLevel log_level) {
228 base::AutoLock lock(lock_);
229
230 observers_.AddObserver(observer);
231 OnAddObserver(observer, log_level);
232 UpdateLogLevel();
233 }
234
235 void NetLog::SetObserverLogLevel(
236 net::NetLog::ThreadSafeObserver* observer,
237 LogLevel log_level) {
238 base::AutoLock lock(lock_);
239
240 DCHECK(observers_.HasObserver(observer));
241 OnSetObserverLogLevel(observer, log_level);
242 UpdateLogLevel();
243 }
244
245 void NetLog::RemoveThreadSafeObserver(
246 net::NetLog::ThreadSafeObserver* observer) {
247 base::AutoLock lock(lock_);
248
249 DCHECK(observers_.HasObserver(observer));
250 observers_.RemoveObserver(observer);
251 OnRemoveObserver(observer);
252 UpdateLogLevel();
253 }
254
255 void NetLog::UpdateLogLevel() {
256 lock_.AssertAcquired();
257
258 // Look through all the observers and find the finest granularity
259 // log level (higher values of the enum imply *lower* log levels).
260 LogLevel new_effective_log_level = base_log_level_;
261 ObserverListBase<ThreadSafeObserver>::Iterator it(observers_);
262 ThreadSafeObserver* observer;
263 while ((observer = it.GetNext()) != NULL) {
264 new_effective_log_level =
265 std::min(new_effective_log_level, observer->log_level());
266 }
267 base::subtle::NoBarrier_Store(&effective_log_level_,
268 new_effective_log_level);
269 }
270
206 // static 271 // static
207 std::string NetLog::TickCountToString(const base::TimeTicks& time) { 272 std::string NetLog::TickCountToString(const base::TimeTicks& time) {
208 int64 delta_time = (time - base::TimeTicks()).InMilliseconds(); 273 int64 delta_time = (time - base::TimeTicks()).InMilliseconds();
209 return base::Int64ToString(delta_time); 274 return base::Int64ToString(delta_time);
210 } 275 }
211 276
212 // static 277 // static
213 const char* NetLog::EventTypeToString(EventType event) { 278 const char* NetLog::EventTypeToString(EventType event) {
214 switch (event) { 279 switch (event) {
215 #define EVENT_TYPE(label) case TYPE_ ## label: return #label; 280 #define EVENT_TYPE(label) case TYPE_ ## label: return #label;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 EventPhase phase, 388 EventPhase phase,
324 const NetLog::ParametersCallback* parameters_callback) { 389 const NetLog::ParametersCallback* parameters_callback) {
325 LogLevel log_level = GetLogLevel(); 390 LogLevel log_level = GetLogLevel();
326 if (log_level == LOG_NONE) 391 if (log_level == LOG_NONE)
327 return; 392 return;
328 Entry entry(type, source, phase, base::TimeTicks::Now(), 393 Entry entry(type, source, phase, base::TimeTicks::Now(),
329 parameters_callback, log_level); 394 parameters_callback, log_level);
330 OnAddEntry(entry); 395 OnAddEntry(entry);
331 } 396 }
332 397
398 void NetLog::OnAddEntry(const Entry& entry) {
mmenke 2013/05/30 18:18:59 Can just get rid of this function and inline its b
kouhei (in TOK) 2013/05/31 06:30:03 Done.
399 base::AutoLock lock(lock_);
400
401 // Notify all of the log observers.
402 FOR_EACH_OBSERVER(ThreadSafeObserver, observers_, OnAddEntry(entry));
403 }
404
333 void BoundNetLog::AddEntry(NetLog::EventType type, 405 void BoundNetLog::AddEntry(NetLog::EventType type,
334 NetLog::EventPhase phase) const { 406 NetLog::EventPhase phase) const {
335 if (!net_log_) 407 if (!net_log_)
336 return; 408 return;
337 net_log_->AddEntry(type, source_, phase, NULL); 409 net_log_->AddEntry(type, source_, phase, NULL);
338 } 410 }
339 411
340 void BoundNetLog::AddEntry( 412 void BoundNetLog::AddEntry(
341 NetLog::EventType type, 413 NetLog::EventType type,
342 NetLog::EventPhase phase, 414 NetLog::EventPhase phase,
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 BoundNetLog BoundNetLog::Make(NetLog* net_log, 492 BoundNetLog BoundNetLog::Make(NetLog* net_log,
421 NetLog::SourceType source_type) { 493 NetLog::SourceType source_type) {
422 if (!net_log) 494 if (!net_log)
423 return BoundNetLog(); 495 return BoundNetLog();
424 496
425 NetLog::Source source(source_type, net_log->NextID()); 497 NetLog::Source source(source_type, net_log->NextID());
426 return BoundNetLog(source, net_log); 498 return BoundNetLog(source, net_log);
427 } 499 }
428 500
429 } // namespace net 501 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698