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

Unified Diff: net/base/capturing_net_log.h

Issue 1746012: More cleanup of net_log.h (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | net/base/capturing_net_log.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/capturing_net_log.h
===================================================================
--- net/base/capturing_net_log.h (revision 45736)
+++ net/base/capturing_net_log.h (working copy)
@@ -2,250 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef NET_BASE_NET_LOG_H_
-#define NET_BASE_NET_LOG_H_
+#ifndef NET_BASE_CAPTURING_NET_LOG_H_
+#define NET_BASE_CAPTURING_NET_LOG_H_
-#include <string>
#include <vector>
#include "base/basictypes.h"
#include "base/ref_counted.h"
#include "base/scoped_ptr.h"
-#include "base/time.h"
#include "net/base/net_log.h"
namespace net {
-// NetLog is the destination for log messages generated by the network stack.
-// Each log message has a "source" field which identifies the specific entity
-// that generated the message (for example, which URLRequest or which
-// SocketStream).
-//
-// To avoid needing to pass in the "source id" to the logging functions, NetLog
-// is usually accessed through a BoundNetLog, which will always pass in a
-// specific source ID.
-//
-// Note that NetLog is NOT THREADSAFE.
-//
-// ******** The NetLog (and associated logging) is a work in progress ********
-//
-// TODO(eroman): Remove the 'const' qualitifer from the BoundNetLog methods.
-// TODO(eroman): Remove the AddString() and AddStringLiteral() methods.
-// These are a carry-over from old approach. Really, consumers
-// should be calling AddEventWithParameters(), and passing a
-// custom EventParameters* object that encapsulates all of the
-// interesting state.
-// TODO(eroman): Remove NetLogUtil. Pretty printing should only be done from
-// javascript, and should be very context-aware.
-// TODO(eroman): Move Capturing*NetLog to its own file. (And eventually remove
-// all the consumers of it).
-// TODO(eroman): Make the DNS jobs emit directly into the NetLog.
-// TODO(eroman): Start a new Source each time URLRequest redirects
-// (simpler to reason about each as a separate entity).
-// TODO(eroman): Add the URLRequest load flags to the start entry.
-
-class NetLog {
- public:
- enum EventType {
-#define EVENT_TYPE(label) TYPE_ ## label,
-#include "net/base/net_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,
- PHASE_END,
- };
-
- // The "source" identifies the entity that generated the log message.
- enum SourceType {
- SOURCE_NONE,
- SOURCE_URL_REQUEST,
- SOURCE_SOCKET_STREAM,
- SOURCE_INIT_PROXY_RESOLVER,
- SOURCE_CONNECT_JOB,
- SOURCE_SOCKET,
- };
-
- // Identifies the entity that generated this log. The |id| field should
- // uniquely identify the source, and is used by log observers to infer
- // message groupings. Can use NetLog::NextID() to create unique IDs.
- struct Source {
- static const uint32 kInvalidId = 0;
-
- Source() : type(SOURCE_NONE), id(kInvalidId) {}
- Source(SourceType type, uint32 id) : type(type), id(id) {}
- bool is_valid() { return id != kInvalidId; }
-
- SourceType type;
- uint32 id;
- };
-
- // Base class for associating additional parameters with an event. Log
- // observers need to know what specific derivations of EventParameters a
- // particular EventType uses, in order to get at the individual components.
- class EventParameters : public base::RefCounted<EventParameters> {
- public:
- EventParameters() {}
- virtual ~EventParameters() {}
-
- // Serializes the parameters to a string representation (this should be a
- // lossless conversion).
- virtual std::string ToString() const = 0;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(EventParameters);
- };
-
- NetLog() {}
- virtual ~NetLog() {}
-
- // Emits an event to the log stream.
- // |type| - The type of the event.
- // |time| - The time when the event occurred.
- // |source| - The source that generated the event.
- // |phase| - An optional parameter indicating whether this is the start/end
- // of an action.
- // |extra_parameters| - Optional (may be NULL) parameters for this event.
- // The specific subclass of EventParameters is defined
- // by the contract for events of this |type|.
- virtual void AddEntry(EventType type,
- const base::TimeTicks& time,
- const Source& source,
- EventPhase phase,
- EventParameters* extra_parameters) = 0;
-
- // Returns a unique ID which can be used as a source ID.
- virtual uint32 NextID() = 0;
-
- // Returns true if more complicated messages should be sent to the log.
- // TODO(eroman): This is a carry-over from refactoring; figure out
- // something better.
- virtual bool HasListener() const = 0;
-
- // Returns a C-String symbolic name for |event_type|.
- static const char* EventTypeToString(EventType event_type);
-
- // Returns a list of all the available EventTypes.
- static std::vector<EventType> GetAllEventTypes();
-
- private:
- DISALLOW_COPY_AND_ASSIGN(NetLog);
-};
-
-// Helper that binds a Source to a NetLog, and exposes convenience methods to
-// output log messages without needing to pass in the source.
-class BoundNetLog {
- public:
- BoundNetLog() : net_log_(NULL) {}
-
- // TODO(eroman): This is a complete hack to allow passing in NULL in
- // place of a BoundNetLog. I added this while refactoring to simplify the
- // task of updating all the callers.
- BoundNetLog(uint32) : net_log_(NULL) {}
-
- BoundNetLog(const NetLog::Source& source, NetLog* net_log)
- : source_(source), net_log_(net_log) {
- }
-
- void AddEntry(NetLog::EventType type,
- NetLog::EventPhase phase,
- NetLog::EventParameters* extra_parameters) const;
-
- void AddEntryWithTime(NetLog::EventType type,
- const base::TimeTicks& time,
- NetLog::EventPhase phase,
- NetLog::EventParameters* extra_parameters) const;
-
- // Convenience methods that call through to the NetLog, passing in the
- // currently bound source.
- void AddEvent(NetLog::EventType event_type) const;
- void AddEventWithParameters(NetLog::EventType event_type,
- NetLog::EventParameters* params) const;
- bool HasListener() const;
- void BeginEvent(NetLog::EventType event_type) const;
- void BeginEventWithParameters(NetLog::EventType event_type,
- NetLog::EventParameters* params) const;
- void BeginEventWithString(NetLog::EventType event_type,
- const std::string& string) const;
- void BeginEventWithInteger(NetLog::EventType event_type, int integer) const;
- void AddEventWithInteger(NetLog::EventType event_type, int integer) const;
- void EndEvent(NetLog::EventType event_type) const;
- void EndEventWithParameters(NetLog::EventType event_type,
- NetLog::EventParameters* params) const;
- void EndEventWithInteger(NetLog::EventType event_type, int integer) const;
-
- // Deprecated: Don't add new dependencies that use these methods. Instead, use
- // AddEventWithParameters().
- void AddString(const std::string& string) const;
- void AddStringLiteral(const char* literal) const;
-
- // Helper to create a BoundNetLog given a NetLog and a SourceType. Takes care
- // of creating a unique source ID, and handles the case of NULL net_log.
- static BoundNetLog Make(NetLog* net_log, NetLog::SourceType source_type);
-
- const NetLog::Source& source() const { return source_; }
- NetLog* net_log() const { return net_log_; }
-
- private:
- NetLog::Source source_;
- NetLog* net_log_;
-};
-
-// NetLogStringParameter is a subclass of EventParameters that encapsulates a
-// single std::string parameter.
-class NetLogStringParameter : public NetLog::EventParameters {
- public:
- explicit NetLogStringParameter(const std::string& value);
-
- const std::string& value() const {
- return value_;
- }
-
- virtual std::string ToString() const {
- return value_;
- }
-
- private:
- std::string value_;
-};
-
-// NetLogIntegerParameter is a subclass of EventParameters that encapsulates a
-// single integer parameter.
-class NetLogIntegerParameter : public NetLog::EventParameters {
- public:
- explicit NetLogIntegerParameter(int value) : value_(value) {}
-
- int value() const {
- return value_;
- }
-
- virtual std::string ToString() const;
-
- private:
- const int value_;
-};
-
-// NetLogStringLiteralParameter is a subclass of EventParameters that
-// encapsulates a single string literal parameter.
-class NetLogStringLiteralParameter : public NetLog::EventParameters {
- public:
- explicit NetLogStringLiteralParameter(const char* value) : value_(value) {}
-
- const char* const value() const {
- return value_;
- }
-
- virtual std::string ToString() const;
-
- private:
- const char* const value_;
-};
-
-
// CapturingNetLog is an implementation of NetLog that saves messages to a
// bounded buffer.
class CapturingNetLog : public NetLog {
@@ -274,8 +42,7 @@
// Creates a CapturingNetLog that logs a maximum of |max_num_entries|
// messages.
- explicit CapturingNetLog(size_t max_num_entries)
- : next_id_(0), max_num_entries_(max_num_entries) {}
+ explicit CapturingNetLog(size_t max_num_entries);
// NetLog implementation:
virtual void AddEntry(EventType type,
@@ -338,4 +105,4 @@
} // namespace net
-#endif // NET_BASE_NET_LOG_H_
+#endif // NET_BASE_CAPTURING_NET_LOG_H_
« no previous file with comments | « no previous file | net/base/capturing_net_log.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698