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_ |