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

Unified Diff: net/base/net_log.h

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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 | « net/base/net_info_source_list.h ('k') | net/base/net_log.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/net_log.h
diff --git a/net/base/net_log.h b/net/base/net_log.h
deleted file mode 100644
index 5fb27917aba09cb0ec5f63990a39f78aa83a43bf..0000000000000000000000000000000000000000
--- a/net/base/net_log.h
+++ /dev/null
@@ -1,401 +0,0 @@
-// Copyright (c) 2012 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_NET_LOG_H_
-#define NET_BASE_NET_LOG_H_
-
-#include <string>
-
-#include "base/atomicops.h"
-#include "base/basictypes.h"
-#include "base/callback_forward.h"
-#include "base/compiler_specific.h"
-#include "base/observer_list.h"
-#include "base/strings/string16.h"
-#include "base/synchronization/lock.h"
-#include "base/time/time.h"
-#include "net/base/net_export.h"
-
-namespace base {
-class DictionaryValue;
-class Value;
-}
-
-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
-// SpdySession).
-//
-// 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.
-//
-// All methods are thread safe, with the exception that no NetLog or
-// NetLog::ThreadSafeObserver functions may be called by an observer's
-// OnAddEntry() method. Doing so will result in a deadlock.
-//
-// For a broader introduction see the design document:
-// https://sites.google.com/a/chromium.org/dev/developers/design-documents/network-stack/netlog
-class NET_EXPORT NetLog {
- public:
- enum EventType {
-#define EVENT_TYPE(label) TYPE_ ## label,
-#include "net/base/net_log_event_type_list.h"
-#undef EVENT_TYPE
- EVENT_COUNT
- };
-
- // 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 {
-#define SOURCE_TYPE(label) SOURCE_ ## label,
-#include "net/base/net_log_source_type_list.h"
-#undef SOURCE_TYPE
- SOURCE_COUNT
- };
-
- // Specifies the granularity of events that should be emitted to the log.
- //
- // Since the LogLevel may be read and set on any thread without locking, it
- // may be possible for an Observer to receive an event or parameters that
- // normally wouldn't be logged at the currently active log level.
- enum LogLevel {
- // Log everything possible, even if it is slow and memory expensive.
- // Includes logging of transferred bytes.
- LOG_ALL,
-
- // Log all events, but do not include the actual transferred bytes as
- // parameters for bytes sent/received events.
- LOG_ALL_BUT_BYTES,
-
- // Log all events, but do not include the actual transferred bytes and
- // remove cookies and HTTP credentials.
- LOG_STRIP_PRIVATE_DATA,
-
- // Don't log any events.
- LOG_NONE,
- };
-
- // A callback function that return a Value representation of the parameters
- // associated with an event. If called, it will be called synchonously,
- // so it need not have owning references. May be called more than once, or
- // not at all. May return NULL.
- typedef base::Callback<base::Value*(LogLevel)> ParametersCallback;
-
- // 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 NET_EXPORT Source {
- static const uint32 kInvalidId;
-
- Source();
- Source(SourceType type, uint32 id);
- bool IsValid() const;
-
- // Adds the source to a DictionaryValue containing event parameters,
- // using the name "source_dependency".
- void AddToEventParameters(base::DictionaryValue* event_params) const;
-
- // Returns a callback that returns a dictionary with a single entry
- // named "source_dependecy" that describes |this|.
- ParametersCallback ToEventParametersCallback() const;
-
- // Attempts to extract a Source from a set of event parameters. Returns
- // true and writes the result to |source| on success. Returns false and
- // makes |source| an invalid source on failure.
- // TODO(mmenke): Long term, we want to remove this.
- static bool FromEventParameters(base::Value* event_params, Source* source);
-
- SourceType type;
- uint32 id;
- };
-
- struct NET_EXPORT EntryData {
- EntryData(EventType type,
- Source source,
- EventPhase phase,
- base::TimeTicks time,
- const ParametersCallback* parameters_callback);
- ~EntryData();
-
- const EventType type;
- const Source source;
- const EventPhase phase;
- const base::TimeTicks time;
- const ParametersCallback* const parameters_callback;
- };
-
- // An Entry pre-binds EntryData to a LogLevel, so observers will observe the
- // output of ToValue() and ParametersToValue() at their log level rather than
- // current maximum.
- class NET_EXPORT Entry {
- public:
- Entry(const EntryData* data, LogLevel log_level);
- ~Entry();
-
- EventType type() const { return data_->type; }
- Source source() const { return data_->source; }
- EventPhase phase() const { return data_->phase; }
-
- // Serializes the specified event to a Value. The Value also includes the
- // current time. Caller takes ownership of returned Value. Takes in a time
- // to allow back-dating entries.
- base::Value* ToValue() const;
-
- // Returns the parameters as a Value. Returns NULL if there are no
- // parameters. Caller takes ownership of returned Value.
- base::Value* ParametersToValue() const;
-
- private:
- const EntryData* const data_;
-
- // Log level when the event occurred.
- const LogLevel log_level_;
-
- // It is not safe to copy this class, since |parameters_callback_| may
- // include pointers that become stale immediately after the event is added,
- // even if the code were modified to keep its own copy of the callback.
- DISALLOW_COPY_AND_ASSIGN(Entry);
- };
-
- // An observer, that must ensure its own thread safety, for events
- // being added to a NetLog.
- class NET_EXPORT ThreadSafeObserver {
- public:
- // Constructs an observer that wants to see network events, with
- // the specified minimum event granularity. A ThreadSafeObserver can only
- // observe a single NetLog at a time.
- //
- // Observers will be called on the same thread an entry is added on,
- // and are responsible for ensuring their own thread safety.
- //
- // Observers must stop watching a NetLog before either the Observer or the
- // NetLog is destroyed.
- ThreadSafeObserver();
-
- // Returns the minimum log level for events this observer wants to
- // receive. Must not be called when not watching a NetLog.
- LogLevel log_level() const;
-
- // Returns the NetLog we are currently watching, if any. Returns NULL
- // otherwise.
- NetLog* net_log() const;
-
- // This method will be called on the thread that the event occurs on. It
- // is the responsibility of the observer to handle it in a thread safe
- // manner.
- //
- // It is illegal for an Observer to call any NetLog or
- // NetLog::Observer functions in response to a call to OnAddEntry.
- virtual void OnAddEntry(const Entry& entry) = 0;
-
- protected:
- virtual ~ThreadSafeObserver();
-
- private:
- friend class NetLog;
-
- void OnAddEntryData(const EntryData& entry_data);
-
- // Both of these values are only modified by the NetLog.
- LogLevel log_level_;
- NetLog* net_log_;
-
- DISALLOW_COPY_AND_ASSIGN(ThreadSafeObserver);
- };
-
- NetLog();
- virtual ~NetLog();
-
- // Emits a global event to the log stream, with its own unique source ID.
- void AddGlobalEntry(EventType type);
- void AddGlobalEntry(EventType type,
- const NetLog::ParametersCallback& parameters_callback);
-
- // Returns a unique ID which can be used as a source ID. All returned IDs
- // will be unique and greater than 0.
- uint32 NextID();
-
- // Returns the logging level for this NetLog. This is used to avoid computing
- // and saving expensive log entries.
- LogLevel GetLogLevel() const;
-
- // Adds an observer and sets its log level. The observer must not be
- // watching any NetLog, including this one, when this is called.
- //
- // NetLog implementations must call NetLog::OnAddObserver to update the
- // observer's internal state.
- void AddThreadSafeObserver(ThreadSafeObserver* observer, LogLevel log_level);
-
- // Sets the log level of |observer| to |log_level|. |observer| must be
- // watching |this|. NetLog implementations must call
- // NetLog::OnSetObserverLogLevel to update the observer's internal state.
- void SetObserverLogLevel(ThreadSafeObserver* observer, LogLevel log_level);
-
- // Removes an observer. NetLog implementations must call
- // NetLog::OnAddObserver to update the observer's internal state.
- //
- // For thread safety reasons, it is recommended that this not be called in
- // an object's destructor.
- void RemoveThreadSafeObserver(ThreadSafeObserver* observer);
-
- // Converts a time to the string format that the NetLog uses to represent
- // times. Strings are used since integers may overflow.
- static std::string TickCountToString(const base::TimeTicks& time);
-
- // Returns a C-String symbolic name for |event_type|.
- static const char* EventTypeToString(EventType event_type);
-
- // Returns a dictionary that maps event type symbolic names to their enum
- // values. Caller takes ownership of the returned Value.
- static base::Value* GetEventTypesAsValue();
-
- // Returns a C-String symbolic name for |source_type|.
- static const char* SourceTypeToString(SourceType source_type);
-
- // Returns a dictionary that maps source type symbolic names to their enum
- // values. Caller takes ownership of the returned Value.
- static base::Value* GetSourceTypesAsValue();
-
- // Returns a C-String symbolic name for |event_phase|.
- static const char* EventPhaseToString(EventPhase event_phase);
-
- // Returns true if |log_level| indicates the actual bytes transferred should
- // be logged. This is only the case when |log_level| is LOG_ALL.
- static bool IsLoggingBytes(LogLevel log_level);
-
- // Returns true if |log_level| indicates that events should be logged. This is
- // the case when |log_level| is anything other than LOG_NONE.
- static bool IsLogging(LogLevel log_level);
-
- // Creates a ParametersCallback that encapsulates a single integer.
- // Warning: |name| must remain valid for the life of the callback.
- // TODO(mmenke): Rename this to be consistent with Int64Callback.
- static ParametersCallback IntegerCallback(const char* name, int value);
-
- // Creates a ParametersCallback that encapsulates a single int64. The
- // callback will return the value as a StringValue, since IntegerValues
- // only support 32-bit values.
- // Warning: |name| must remain valid for the life of the callback.
- static ParametersCallback Int64Callback(const char* name, int64 value);
-
- // Creates a ParametersCallback that encapsulates a single UTF8 string. Takes
- // |value| as a pointer to avoid copying, and emphasize it must be valid for
- // the life of the callback. |value| may not be NULL.
- // Warning: |name| and |value| must remain valid for the life of the callback.
- static ParametersCallback StringCallback(const char* name,
- const std::string* value);
-
- // Same as above, but takes in a UTF16 string.
- static ParametersCallback StringCallback(const char* name,
- const base::string16* value);
-
- private:
- friend class BoundNetLog;
-
- void AddEntry(EventType type,
- const Source& source,
- EventPhase phase,
- const NetLog::ParametersCallback* parameters_callback);
-
- // Called whenever an observer is added or removed, or has its log level
- // changed. Must have acquired |lock_| prior to calling.
- void UpdateLogLevel();
-
- // |lock_| protects access to |observers_|.
- base::Lock lock_;
-
- // Last assigned source ID. Incremented to get the next one.
- base::subtle::Atomic32 last_id_;
-
- // The current log level.
- base::subtle::Atomic32 effective_log_level_;
-
- // |lock_| must be acquired whenever reading or writing to this.
- ObserverList<ThreadSafeObserver, true> observers_;
-
- 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 NET_EXPORT BoundNetLog {
- public:
- BoundNetLog() : net_log_(NULL) {}
-
- // Add a log entry to the NetLog for the bound source.
- void AddEntry(NetLog::EventType type, NetLog::EventPhase phase) const;
- void AddEntry(NetLog::EventType type,
- NetLog::EventPhase phase,
- const NetLog::ParametersCallback& get_parameters) const;
-
- // Convenience methods that call AddEntry with a fixed "capture phase"
- // (begin, end, or none).
- void BeginEvent(NetLog::EventType type) const;
- void BeginEvent(NetLog::EventType type,
- const NetLog::ParametersCallback& get_parameters) const;
-
- void EndEvent(NetLog::EventType type) const;
- void EndEvent(NetLog::EventType type,
- const NetLog::ParametersCallback& get_parameters) const;
-
- void AddEvent(NetLog::EventType type) const;
- void AddEvent(NetLog::EventType type,
- const NetLog::ParametersCallback& get_parameters) const;
-
- // Just like AddEvent, except |net_error| is a net error code. A parameter
- // called "net_error" with the indicated value will be recorded for the event.
- // |net_error| must be negative, and not ERR_IO_PENDING, as it's not a true
- // error.
- void AddEventWithNetErrorCode(NetLog::EventType event_type,
- int net_error) const;
-
- // Just like EndEvent, except |net_error| is a net error code. If it's
- // negative, a parameter called "net_error" with a value of |net_error| is
- // associated with the event. Otherwise, the end event has no parameters.
- // |net_error| must not be ERR_IO_PENDING, as it's not a true error.
- void EndEventWithNetErrorCode(NetLog::EventType event_type,
- int net_error) const;
-
- // Logs a byte transfer event to the NetLog. Determines whether to log the
- // received bytes or not based on the current logging level.
- void AddByteTransferEvent(NetLog::EventType event_type,
- int byte_count, const char* bytes) const;
-
- NetLog::LogLevel GetLogLevel() const;
-
- // Shortcut for NetLog::IsLoggingBytes(this->GetLogLevel()).
- bool IsLoggingBytes() const;
-
- // Shortcut for NetLog::IsLogging(this->GetLogLevel()).
- bool IsLogging() 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:
- BoundNetLog(const NetLog::Source& source, NetLog* net_log)
- : source_(source), net_log_(net_log) {
- }
-
- NetLog::Source source_;
- NetLog* net_log_;
-};
-
-} // namespace net
-
-#endif // NET_BASE_NET_LOG_H_
« no previous file with comments | « net/base/net_info_source_list.h ('k') | net/base/net_log.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698