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

Side by Side Diff: base/trace_event/trace_log.h

Issue 2327333002: Add OnBeforeTraceLogDisabled notification to EnabledStateObserver (Closed)
Patch Set: Created 4 years, 3 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 unified diff | Download patch
« no previous file with comments | « base/trace_event/trace_event_unittest.cc ('k') | base/trace_event/trace_log.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 BASE_TRACE_EVENT_TRACE_LOG_H_ 5 #ifndef BASE_TRACE_EVENT_TRACE_LOG_H_
6 #define BASE_TRACE_EVENT_TRACE_LOG_H_ 6 #define BASE_TRACE_EVENT_TRACE_LOG_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 // disabled. This can be used to tie into other library's tracing systems 106 // disabled. This can be used to tie into other library's tracing systems
107 // on-demand. 107 // on-demand.
108 class BASE_EXPORT EnabledStateObserver { 108 class BASE_EXPORT EnabledStateObserver {
109 public: 109 public:
110 virtual ~EnabledStateObserver() = default; 110 virtual ~EnabledStateObserver() = default;
111 111
112 // Called just after the tracing system becomes enabled, outside of the 112 // Called just after the tracing system becomes enabled, outside of the
113 // |lock_|. TraceLog::IsEnabled() is true at this point. 113 // |lock_|. TraceLog::IsEnabled() is true at this point.
114 virtual void OnTraceLogEnabled() = 0; 114 virtual void OnTraceLogEnabled() = 0;
115 115
116 // Called just before the tracing system disables, outside of the |lock_|.
117 // TraceLog::IsEnabled() is true at this point. It is still possible to
118 // emit trace events from the observer.
119 virtual void OnBeforeTraceLogDisabled() {}
120
116 // Called just after the tracing system disables, outside of the |lock_|. 121 // Called just after the tracing system disables, outside of the |lock_|.
117 // TraceLog::IsEnabled() is false at this point. 122 // TraceLog::IsEnabled() is false at this point.
118 virtual void OnTraceLogDisabled() = 0; 123 virtual void OnTraceLogDisabled() = 0;
119 }; 124 };
120 void AddEnabledStateObserver(EnabledStateObserver* listener); 125 void AddEnabledStateObserver(EnabledStateObserver* listener);
121 void RemoveEnabledStateObserver(EnabledStateObserver* listener); 126 void RemoveEnabledStateObserver(EnabledStateObserver* listener);
122 bool HasEnabledStateObserver(EnabledStateObserver* listener) const; 127 bool HasEnabledStateObserver(EnabledStateObserver* listener) const;
123 128
124 // Asynchronous enabled state listeners. When tracing is enabled or disabled, 129 // Asynchronous enabled state listeners. When tracing is enabled or disabled,
125 // for each observer, a task for invoking its appropriate callback is posted 130 // for each observer, a task for invoking its appropriate callback is posted
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 static const InternalTraceOptions kInternalRecordUntilFull; 478 static const InternalTraceOptions kInternalRecordUntilFull;
474 static const InternalTraceOptions kInternalRecordContinuously; 479 static const InternalTraceOptions kInternalRecordContinuously;
475 static const InternalTraceOptions kInternalEchoToConsole; 480 static const InternalTraceOptions kInternalEchoToConsole;
476 static const InternalTraceOptions kInternalEnableSampling; 481 static const InternalTraceOptions kInternalEnableSampling;
477 static const InternalTraceOptions kInternalRecordAsMuchAsPossible; 482 static const InternalTraceOptions kInternalRecordAsMuchAsPossible;
478 static const InternalTraceOptions kInternalEnableArgumentFilter; 483 static const InternalTraceOptions kInternalEnableArgumentFilter;
479 484
480 // This lock protects TraceLog member accesses (except for members protected 485 // This lock protects TraceLog member accesses (except for members protected
481 // by thread_info_lock_) from arbitrary threads. 486 // by thread_info_lock_) from arbitrary threads.
482 mutable Lock lock_; 487 mutable Lock lock_;
488 // This lock protects TraceLog::SetDisable from being entered by multiple
489 // threads. The generic |lock_| could be unlocked during iterating over
490 // EnabledStateObserver's.
491 mutable Lock disabling_lock_;
483 // This lock protects accesses to thread_names_, thread_event_start_times_ 492 // This lock protects accesses to thread_names_, thread_event_start_times_
484 // and thread_colors_. 493 // and thread_colors_.
485 Lock thread_info_lock_; 494 Lock thread_info_lock_;
486 Mode mode_; 495 Mode mode_;
487 int num_traces_recorded_; 496 int num_traces_recorded_;
488 std::unique_ptr<TraceBuffer> logged_events_; 497 std::unique_ptr<TraceBuffer> logged_events_;
489 std::vector<std::unique_ptr<TraceEvent>> metadata_events_; 498 std::vector<std::unique_ptr<TraceEvent>> metadata_events_;
490 subtle::AtomicWord /* EventCallback */ event_callback_; 499 subtle::AtomicWord /* EventCallback */ event_callback_;
491 bool dispatching_to_observer_list_; 500 bool dispatching_to_observer_list_;
492 std::vector<EnabledStateObserver*> enabled_state_observer_list_; 501 std::vector<EnabledStateObserver*> enabled_state_observer_list_;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 subtle::AtomicWord generation_; 556 subtle::AtomicWord generation_;
548 bool use_worker_thread_; 557 bool use_worker_thread_;
549 558
550 DISALLOW_COPY_AND_ASSIGN(TraceLog); 559 DISALLOW_COPY_AND_ASSIGN(TraceLog);
551 }; 560 };
552 561
553 } // namespace trace_event 562 } // namespace trace_event
554 } // namespace base 563 } // namespace base
555 564
556 #endif // BASE_TRACE_EVENT_TRACE_LOG_H_ 565 #endif // BASE_TRACE_EVENT_TRACE_LOG_H_
OLDNEW
« no previous file with comments | « base/trace_event/trace_event_unittest.cc ('k') | base/trace_event/trace_log.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698