capturing_net_log.cc revision 3f50c38dc070f4bb515c1b64450dae14f316474e
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/capturing_net_log.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace net { 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingNetLog::Entry::Entry(EventType type, 10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const base::TimeTicks& time, 11731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick Source source, 12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EventPhase phase, 13731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EventParameters* extra_parameters) 14731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick : type(type), time(time), source(source), phase(phase), 15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick extra_parameters(extra_parameters) { 16731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 17731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 18731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingNetLog::Entry::~Entry() {} 19731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochCapturingNetLog::CapturingNetLog(size_t max_num_entries) 213f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen : last_id_(-1), 223f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen max_num_entries_(max_num_entries), 233f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen log_level_(LOG_ALL_BUT_BYTES) { 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 26731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingNetLog::~CapturingNetLog() {} 27731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CapturingNetLog::AddEntry(EventType type, 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const base::TimeTicks& time, 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Source& source, 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EventPhase phase, 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EventParameters* extra_parameters) { 3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen AutoLock lock(lock_); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Entry entry(type, time, source, phase, extra_parameters); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (entries_.size() + 1 < max_num_entries_) 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch entries_.push_back(entry); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochuint32 CapturingNetLog::NextID() { 4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return base::subtle::NoBarrier_AtomicIncrement(&last_id_, 1); 4121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 4321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenNetLog::LogLevel CapturingNetLog::GetLogLevel() const { 443f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen AutoLock lock(lock_); 453f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen return log_level_; 4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 4721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 4821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid CapturingNetLog::GetEntries(EntryList* entry_list) const { 4921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen AutoLock lock(lock_); 5021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen *entry_list = entries_; 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CapturingNetLog::Clear() { 5421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen AutoLock lock(lock_); 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch entries_.clear(); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 583f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsenvoid CapturingNetLog::SetLogLevel(NetLog::LogLevel log_level) { 593f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen AutoLock lock(lock_); 603f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen log_level_ = log_level; 613f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} 623f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 63731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingBoundNetLog::CapturingBoundNetLog(const NetLog::Source& source, 64731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CapturingNetLog* net_log) 65731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick : source_(source), capturing_net_log_(net_log) { 66731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 67731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 68731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingBoundNetLog::CapturingBoundNetLog(size_t max_num_entries) 69731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick : capturing_net_log_(new CapturingNetLog(max_num_entries)) {} 70731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 71731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingBoundNetLog::~CapturingBoundNetLog() {} 72731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 7321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid CapturingBoundNetLog::GetEntries( 7421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen CapturingNetLog::EntryList* entry_list) const { 7521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen capturing_net_log_->GetEntries(entry_list); 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid CapturingBoundNetLog::Clear() { 7921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen capturing_net_log_->Clear(); 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 823f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsenvoid CapturingBoundNetLog::SetLogLevel(NetLog::LogLevel log_level) { 833f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen capturing_net_log_->SetLogLevel(log_level); 843f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} 853f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace net 87