diff options
author | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-28 19:28:09 +0000 |
---|---|---|
committer | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-28 19:28:09 +0000 |
commit | ec11be60eaf6e832219328ea18656c558dec3040 (patch) | |
tree | 1d8a6710f277a55b4743fbc54c8554abf3164669 /net/base/capturing_net_log.h | |
parent | 9bb75ccc56cdb94a9778dcef26be3de97808f3ce (diff) | |
download | chromium_src-ec11be60eaf6e832219328ea18656c558dec3040.zip chromium_src-ec11be60eaf6e832219328ea18656c558dec3040.tar.gz chromium_src-ec11be60eaf6e832219328ea18656c558dec3040.tar.bz2 |
More cleanup to address TODOs in net_log.h.
* Removes 9 methods: AddEventWithParameters, BeginEventWithParameters, EndEventWithParameters, BeginEventWithString, BeginEventWithInteger, AddEventWithString, AddEventWithInteger, EndEventWithParameters, EndEventWithInteger. This was becoming ridiculous, instead made the EventParameters* a required parameter.
* Moves CapturingBoundNetLog / CapturingNetLog to its own file.
BUG=37421
Review URL: http://codereview.chromium.org/1746012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45843 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/capturing_net_log.h')
-rw-r--r-- | net/base/capturing_net_log.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/net/base/capturing_net_log.h b/net/base/capturing_net_log.h new file mode 100644 index 0000000..2f95f7c --- /dev/null +++ b/net/base/capturing_net_log.h @@ -0,0 +1,109 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef NET_BASE_CAPTURING_NET_LOG_H_ +#define NET_BASE_CAPTURING_NET_LOG_H_ + +#include <vector> + +#include "base/basictypes.h" +#include "base/ref_counted.h" +#include "base/scoped_ptr.h" +#include "net/base/net_log.h" + +namespace net { + +// CapturingNetLog is an implementation of NetLog that saves messages to a +// bounded buffer. +class CapturingNetLog : public NetLog { + public: + struct Entry { + Entry(EventType type, + const base::TimeTicks& time, + Source source, + EventPhase phase, + EventParameters* extra_parameters) + : type(type), time(time), source(source), phase(phase), + extra_parameters(extra_parameters) { + } + + EventType type; + base::TimeTicks time; + Source source; + EventPhase phase; + scoped_refptr<EventParameters> extra_parameters; + }; + + // Ordered set of entries that were logged. + typedef std::vector<Entry> EntryList; + + enum { kUnbounded = -1 }; + + // Creates a CapturingNetLog that logs a maximum of |max_num_entries| + // messages. + explicit CapturingNetLog(size_t max_num_entries); + + // NetLog implementation: + virtual void AddEntry(EventType type, + const base::TimeTicks& time, + const Source& source, + EventPhase phase, + EventParameters* extra_parameters); + virtual uint32 NextID(); + virtual bool HasListener() const { return true; } + + // Returns the list of all entries in the log. + const EntryList& entries() const { return entries_; } + + void Clear(); + + private: + uint32 next_id_; + size_t max_num_entries_; + EntryList entries_; + + DISALLOW_COPY_AND_ASSIGN(CapturingNetLog); +}; + +// Helper class that exposes a similar API as BoundNetLog, but uses a +// CapturingNetLog rather than the more generic NetLog. +// +// CapturingBoundNetLog can easily be converted to a BoundNetLog using the +// bound() method. +class CapturingBoundNetLog { + public: + CapturingBoundNetLog(const NetLog::Source& source, CapturingNetLog* net_log) + : source_(source), capturing_net_log_(net_log) { + } + + explicit CapturingBoundNetLog(size_t max_num_entries) + : capturing_net_log_(new CapturingNetLog(max_num_entries)) {} + + // The returned BoundNetLog is only valid while |this| is alive. + BoundNetLog bound() const { + return BoundNetLog(source_, capturing_net_log_.get()); + } + + // Returns the list of all entries in the log. + const CapturingNetLog::EntryList& entries() const { + return capturing_net_log_->entries(); + } + + void Clear(); + + // Sends all of captured messages to |net_log|, using the same source ID + // as |net_log|. + void AppendTo(const BoundNetLog& net_log) const; + + private: + NetLog::Source source_; + scoped_ptr<CapturingNetLog> capturing_net_log_; + + DISALLOW_COPY_AND_ASSIGN(CapturingBoundNetLog); +}; + +} // namespace net + +#endif // NET_BASE_CAPTURING_NET_LOG_H_ + |