| Index: net/base/load_log.h
|
| ===================================================================
|
| --- net/base/load_log.h (revision 41560)
|
| +++ net/base/load_log.h (working copy)
|
| @@ -1,196 +0,0 @@
|
| -// Copyright (c) 2009 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_LOAD_LOG_H_
|
| -#define NET_BASE_LOAD_LOG_H_
|
| -
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/ref_counted.h"
|
| -#include "base/time.h"
|
| -
|
| -namespace net {
|
| -
|
| -// LoadLog stores information associated with an individual request. This
|
| -// includes event traces (used to build up profiling information), error
|
| -// return codes from network modules, and arbitrary text messages.
|
| -//
|
| -// Note that LoadLog is NOT THREADSAFE, however it is RefCountedThreadSafe so
|
| -// that it can be AddRef() / Release() across threads.
|
| -class LoadLog : public base::RefCountedThreadSafe<LoadLog> {
|
| - public:
|
| - // TODO(eroman): Really, EventType and EventPhase should be
|
| - // Event::Type and Event::Phase, to be consisent with Entry.
|
| - // But there lots of consumers to change!
|
| - enum EventType {
|
| -#define EVENT_TYPE(label) TYPE_ ## label,
|
| -#include "net/base/load_log_event_type_list.h"
|
| -#undef EVENT_TYPE
|
| - };
|
| -
|
| - // The 'phase' of an event trace (whether it marks the beginning or end
|
| - // of an event.).
|
| - enum EventPhase {
|
| - PHASE_NONE,
|
| - PHASE_BEGIN,
|
| - // TODO(eroman): DEPRECATED: Use TYPE_STRING_LITERAL instead.
|
| - PHASE_END,
|
| - };
|
| -
|
| - struct Event {
|
| - Event(EventType type, EventPhase phase) : type(type), phase(phase) {}
|
| - Event() {}
|
| -
|
| - EventType type;
|
| - EventPhase phase;
|
| - };
|
| -
|
| - struct Entry {
|
| - enum Type {
|
| - // This entry describes an event trace.
|
| - TYPE_EVENT,
|
| -
|
| - // This entry describes a network error code that was returned.
|
| - TYPE_ERROR_CODE,
|
| -
|
| - // This entry is a free-form std::string.
|
| - TYPE_STRING,
|
| -
|
| - // This entry is a C-string literal.
|
| - TYPE_STRING_LITERAL,
|
| - };
|
| -
|
| - Entry(base::TimeTicks time, int error_code)
|
| - : type(TYPE_ERROR_CODE), time(time), error_code(error_code) {
|
| - }
|
| -
|
| - Entry(base::TimeTicks time, const Event& event)
|
| - : type(TYPE_EVENT), time(time), event(event) {
|
| - }
|
| -
|
| - Entry(base::TimeTicks time, const std::string& string)
|
| - : type(TYPE_STRING), time(time), string(string) {
|
| - }
|
| -
|
| - Entry(base::TimeTicks time, const char* literal)
|
| - : type(TYPE_STRING_LITERAL), time(time), literal(literal) {
|
| - }
|
| -
|
| - Type type;
|
| - base::TimeTicks time;
|
| -
|
| - // The following is basically a union, only one of them should be
|
| - // used depending on what |type| is.
|
| - Event event; // valid when (type == TYPE_EVENT).
|
| - int error_code; // valid when (type == TYPE_ERROR_CODE).
|
| - std::string string; // valid when (type == TYPE_STRING).
|
| - const char* literal; // valid when (type == TYPE_STRING_LITERAL).
|
| - };
|
| -
|
| - // Ordered set of entries that were logged.
|
| - // TODO(eroman): use a StackVector or array to avoid allocations.
|
| - typedef std::vector<Entry> EntryList;
|
| -
|
| - // Value for max_num_entries to indicate the LoadLog has no size limit.
|
| - static const size_t kUnbounded = static_cast<size_t>(-1);
|
| -
|
| - // Creates a log, which can hold up to |max_num_entries| entries.
|
| - // If |max_num_entries| is |kUnbounded|, then the log can grow arbitrarily
|
| - // large.
|
| - //
|
| - // If entries are dropped because the log has grown too large, the final entry
|
| - // will be overwritten.
|
| - explicit LoadLog(size_t max_num_entries);
|
| -
|
| - // --------------------------------------------------------------------------
|
| -
|
| - // The public interface for adding events to the log are static methods.
|
| - // This makes it easier to deal with optionally NULL LoadLog.
|
| -
|
| - // Adds an instantaneous event to the log.
|
| - // TODO(eroman): DEPRECATED: use AddStringLiteral() instead.
|
| - static void AddEvent(LoadLog* log, EventType event_type) {
|
| - if (log)
|
| - log->Add(Entry(base::TimeTicks::Now(), Event(event_type, PHASE_NONE)));
|
| - }
|
| -
|
| - // Adds the start of an event to the log. Presumably this event type measures
|
| - // a time duration, and will be matched by a call to EndEvent(event_type).
|
| - static void BeginEvent(LoadLog* log, EventType event_type) {
|
| - if (log)
|
| - log->Add(Entry(base::TimeTicks::Now(), Event(event_type, PHASE_BEGIN)));
|
| - }
|
| -
|
| - // Adds the end of an event to the log. Presumably this event type measures
|
| - // a time duration, and we are matching an earlier call to
|
| - // BeginEvent(event_type).
|
| - static void EndEvent(LoadLog* log, EventType event_type) {
|
| - if (log)
|
| - log->Add(Entry(base::TimeTicks::Now(), Event(event_type, PHASE_END)));
|
| - }
|
| -
|
| - // |literal| should be a string literal (i.e. lives in static storage).
|
| - static void AddStringLiteral(LoadLog* log, const char* literal) {
|
| - if (log)
|
| - log->Add(Entry(base::TimeTicks::Now(), literal));
|
| - }
|
| -
|
| - static void AddString(LoadLog* log, const std::string& string) {
|
| - if (log)
|
| - log->Add(Entry(base::TimeTicks::Now(), string));
|
| - }
|
| -
|
| - static void AddErrorCode(LoadLog* log, int error) {
|
| - if (log)
|
| - log->Add(Entry(base::TimeTicks::Now(), error));
|
| - }
|
| -
|
| - static bool IsUnbounded(const LoadLog* log) {
|
| - return log && log->is_unbounded();
|
| - }
|
| -
|
| - // --------------------------------------------------------------------------
|
| -
|
| - // Returns the list of all entries in the log.
|
| - const EntryList& entries() const {
|
| - return entries_;
|
| - }
|
| -
|
| - // Returns the number of entries that were dropped from the log because the
|
| - // maximum size had been reached.
|
| - size_t num_entries_truncated() const {
|
| - return num_entries_truncated_;
|
| - }
|
| -
|
| - // Returns the bound on the size of the log.
|
| - size_t max_num_entries() const {
|
| - return max_num_entries_;
|
| - }
|
| -
|
| - bool is_unbounded() const {
|
| - return max_num_entries_ == kUnbounded;
|
| - }
|
| -
|
| - // Returns a C-String symbolic name for |event|.
|
| - static const char* EventTypeToString(EventType event_type);
|
| -
|
| - void Add(const Entry& entry);
|
| -
|
| - // Copies all entries from |log|, appending it to the end of |this|.
|
| - void Append(const LoadLog* log);
|
| -
|
| - private:
|
| - friend class base::RefCountedThreadSafe<LoadLog>;
|
| -
|
| - ~LoadLog() {}
|
| -
|
| - EntryList entries_;
|
| - size_t num_entries_truncated_;
|
| - size_t max_num_entries_;;
|
| -};
|
| -
|
| -} // namespace net
|
| -
|
| -#endif // NET_BASE_LOAD_LOG_H_
|
|
|