OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef NET_LOG_NET_LOG_H_ | 5 #ifndef NET_LOG_NET_LOG_H_ |
6 #define NET_LOG_NET_LOG_H_ | 6 #define NET_LOG_NET_LOG_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 | 200 |
201 // Emits a global event to the log stream, with its own unique source ID. | 201 // Emits a global event to the log stream, with its own unique source ID. |
202 void AddGlobalEntry(EventType type); | 202 void AddGlobalEntry(EventType type); |
203 void AddGlobalEntry(EventType type, | 203 void AddGlobalEntry(EventType type, |
204 const NetLog::ParametersCallback& parameters_callback); | 204 const NetLog::ParametersCallback& parameters_callback); |
205 | 205 |
206 // Returns a unique ID which can be used as a source ID. All returned IDs | 206 // Returns a unique ID which can be used as a source ID. All returned IDs |
207 // will be unique and greater than 0. | 207 // will be unique and greater than 0. |
208 uint32 NextID(); | 208 uint32 NextID(); |
209 | 209 |
210 // Returns the capture mode for this NetLog. This is used to avoid computing | 210 // Returns true if there are any observers attached to the NetLog. This can be |
211 // and saving expensive log entries. | 211 // used as an optimization to avoid emitting log entries when there is no |
212 NetLogCaptureMode GetCaptureMode() const; | 212 // chance that the data will be consumed. |
| 213 bool IsCapturing() const; |
213 | 214 |
214 // Adds an observer and sets its log capture mode. The observer must not be | 215 // Adds an observer and sets its log capture mode. The observer must not be |
215 // watching any NetLog, including this one, when this is called. | 216 // watching any NetLog, including this one, when this is called. |
216 // | 217 // |
217 // NetLog implementations must call NetLog::OnAddObserver to update the | 218 // NetLog implementations must call NetLog::OnAddObserver to update the |
218 // observer's internal state. | 219 // observer's internal state. |
219 // | 220 // |
220 // DEPRECATED: The ability to watch the netlog stream is being phased out | 221 // DEPRECATED: The ability to watch the netlog stream is being phased out |
221 // (crbug.com/472693) as it can be misused in production code. Please consult | 222 // (crbug.com/472693) as it can be misused in production code. Please consult |
222 // with a net/log OWNER before introducing a new dependency on this. | 223 // with a net/log OWNER before introducing a new dependency on this. |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 const base::string16* value); | 288 const base::string16* value); |
288 | 289 |
289 private: | 290 private: |
290 friend class BoundNetLog; | 291 friend class BoundNetLog; |
291 | 292 |
292 void AddEntry(EventType type, | 293 void AddEntry(EventType type, |
293 const Source& source, | 294 const Source& source, |
294 EventPhase phase, | 295 EventPhase phase, |
295 const NetLog::ParametersCallback* parameters_callback); | 296 const NetLog::ParametersCallback* parameters_callback); |
296 | 297 |
297 // Called whenever an observer is added or removed, or has its log | 298 // Called whenever an observer is added or removed, to update |
298 // capture mode changed. Must have acquired |lock_| prior to calling. | 299 // |has_observers_|. Must have acquired |lock_| prior to calling. |
299 void UpdateCaptureMode(); | 300 void UpdateIsCapturing(); |
300 | 301 |
301 // |lock_| protects access to |observers_|. | 302 // |lock_| protects access to |observers_|. |
302 base::Lock lock_; | 303 base::Lock lock_; |
303 | 304 |
304 // Last assigned source ID. Incremented to get the next one. | 305 // Last assigned source ID. Incremented to get the next one. |
305 base::subtle::Atomic32 last_id_; | 306 base::subtle::Atomic32 last_id_; |
306 | 307 |
307 // The current capture mode. Note that the capture mode is stored as an | 308 // |is_capturing_| will be 0 when there are no observers watching the NetLog, |
308 // integer rather than a NetLogCaptureMode so that it can be easily | 309 // 1 otherwise. Note that this is stored as an Atomic32 rather than a boolean |
309 // read/written without a lock using Atomic32. | 310 // so it can be accessed without needing a lock. |
310 base::subtle::Atomic32 effective_capture_mode_int32_; | 311 base::subtle::Atomic32 is_capturing_; |
311 | 312 |
312 // |lock_| must be acquired whenever reading or writing to this. | 313 // |lock_| must be acquired whenever reading or writing to this. |
313 ObserverList<ThreadSafeObserver, true> observers_; | 314 ObserverList<ThreadSafeObserver, true> observers_; |
314 | 315 |
315 DISALLOW_COPY_AND_ASSIGN(NetLog); | 316 DISALLOW_COPY_AND_ASSIGN(NetLog); |
316 }; | 317 }; |
317 | 318 |
318 // Helper that binds a Source to a NetLog, and exposes convenience methods to | 319 // Helper that binds a Source to a NetLog, and exposes convenience methods to |
319 // output log messages without needing to pass in the source. | 320 // output log messages without needing to pass in the source. |
320 class NET_EXPORT BoundNetLog { | 321 class NET_EXPORT BoundNetLog { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 // |net_error| must not be ERR_IO_PENDING, as it's not a true error. | 356 // |net_error| must not be ERR_IO_PENDING, as it's not a true error. |
356 void EndEventWithNetErrorCode(NetLog::EventType event_type, | 357 void EndEventWithNetErrorCode(NetLog::EventType event_type, |
357 int net_error) const; | 358 int net_error) const; |
358 | 359 |
359 // Logs a byte transfer event to the NetLog. Determines whether to log the | 360 // Logs a byte transfer event to the NetLog. Determines whether to log the |
360 // received bytes or not based on the current logging level. | 361 // received bytes or not based on the current logging level. |
361 void AddByteTransferEvent(NetLog::EventType event_type, | 362 void AddByteTransferEvent(NetLog::EventType event_type, |
362 int byte_count, | 363 int byte_count, |
363 const char* bytes) const; | 364 const char* bytes) const; |
364 | 365 |
365 NetLogCaptureMode GetCaptureMode() const; | 366 bool IsCapturing() const; |
366 | 367 |
367 // Helper to create a BoundNetLog given a NetLog and a SourceType. Takes care | 368 // Helper to create a BoundNetLog given a NetLog and a SourceType. Takes care |
368 // of creating a unique source ID, and handles the case of NULL net_log. | 369 // of creating a unique source ID, and handles the case of NULL net_log. |
369 static BoundNetLog Make(NetLog* net_log, NetLog::SourceType source_type); | 370 static BoundNetLog Make(NetLog* net_log, NetLog::SourceType source_type); |
370 | 371 |
371 const NetLog::Source& source() const { return source_; } | 372 const NetLog::Source& source() const { return source_; } |
372 NetLog* net_log() const { return net_log_; } | 373 NetLog* net_log() const { return net_log_; } |
373 | 374 |
374 private: | 375 private: |
375 // TODO(eroman): Temporary until crbug.com/467797 is solved. | 376 // TODO(eroman): Temporary until crbug.com/467797 is solved. |
(...skipping 11 matching lines...) Expand all Loading... |
387 NetLog::Source source_; | 388 NetLog::Source source_; |
388 NetLog* net_log_; | 389 NetLog* net_log_; |
389 | 390 |
390 // TODO(eroman): Temporary until crbug.com/467797 is solved. | 391 // TODO(eroman): Temporary until crbug.com/467797 is solved. |
391 Liveness liveness_ = ALIVE; | 392 Liveness liveness_ = ALIVE; |
392 }; | 393 }; |
393 | 394 |
394 } // namespace net | 395 } // namespace net |
395 | 396 |
396 #endif // NET_LOG_NET_LOG_H_ | 397 #endif // NET_LOG_NET_LOG_H_ |
OLD | NEW |