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