Index: net/log/net_log_with_source.h |
diff --git a/net/log/net_log_with_source.h b/net/log/net_log_with_source.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..67d135363c793cd1a9775bf140ea107b8e3213f1 |
--- /dev/null |
+++ b/net/log/net_log_with_source.h |
@@ -0,0 +1,97 @@ |
+// Copyright 2016 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_LOG_NET_LOG_WITH_SOURCE_H_ |
+#define NET_LOG_NET_LOG_WITH_SOURCE_H_ |
+ |
+#include "net/base/net_export.h" |
+#include "net/log/net_log_event_type.h" |
+#include "net/log/net_log_parameters_callback.h" |
+#include "net/log/net_log_source.h" |
+#include "net/log/net_log_source_type.h" |
+ |
+namespace net { |
+ |
+class 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 NetLogWithSource { |
+ public: |
+ NetLogWithSource() : net_log_(NULL) {} |
+ ~NetLogWithSource(); |
+ |
+ // Add a log entry to the NetLog for the bound source. |
+ void AddEntry(NetLogEventType type, NetLogEventPhase phase) const; |
+ void AddEntry(NetLogEventType type, |
+ NetLogEventPhase phase, |
+ const NetLogParametersCallback& get_parameters) const; |
+ |
+ // Convenience methods that call AddEntry with a fixed "capture phase" |
+ // (begin, end, or none). |
+ void BeginEvent(NetLogEventType type) const; |
+ void BeginEvent(NetLogEventType type, |
+ const NetLogParametersCallback& get_parameters) const; |
+ |
+ void EndEvent(NetLogEventType type) const; |
+ void EndEvent(NetLogEventType type, |
+ const NetLogParametersCallback& get_parameters) const; |
+ |
+ void AddEvent(NetLogEventType type) const; |
+ void AddEvent(NetLogEventType type, |
+ const NetLogParametersCallback& 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(NetLogEventType 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(NetLogEventType 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(NetLogEventType event_type, |
+ int byte_count, |
+ const char* bytes) const; |
+ |
+ bool IsCapturing() const; |
+ |
+ // Helper to create a NetLogWithSource given a NetLog and a NetLogSourceType. |
+ // Takes care of creating a unique source ID, and handles |
+ // the case of NULL net_log. |
+ static NetLogWithSource Make(NetLog* net_log, NetLogSourceType source_type); |
+ |
+ const NetLogSource& source() const { return source_; } |
+ NetLog* net_log() const { return net_log_; } |
+ |
+ private: |
+ // TODO(eroman): Temporary until crbug.com/467797 is solved. |
+ enum Liveness { |
+ ALIVE = 0xCA11AB13, |
+ DEAD = 0xDEADBEEF, |
+ }; |
+ |
+ NetLogWithSource(const NetLogSource& source, NetLog* net_log) |
+ : source_(source), net_log_(net_log) {} |
+ |
+ // TODO(eroman): Temporary until crbug.com/467797 is solved. |
+ void CrashIfInvalid() const; |
+ |
+ NetLogSource source_; |
+ NetLog* net_log_; |
+ |
+ // TODO(eroman): Temporary until crbug.com/467797 is solved. |
+ Liveness liveness_ = ALIVE; |
+}; |
+ |
+} // namespace net |
+ |
+#endif // NET_LOG_NET_LOG_WITH_SOURCE_H_ |