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 | 5 |
6 #ifndef BASE_TRACE_EVENT_TRACE_EVENT_IMPL_H_ | 6 #ifndef BASE_TRACE_EVENT_TRACE_EVENT_IMPL_H_ |
7 #define BASE_TRACE_EVENT_TRACE_EVENT_IMPL_H_ | 7 #define BASE_TRACE_EVENT_TRACE_EVENT_IMPL_H_ |
8 | 8 |
9 #include <stack> | 9 #include <stack> |
10 #include <string> | 10 #include <string> |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 unsigned long long as_uint; | 97 unsigned long long as_uint; |
98 long long as_int; | 98 long long as_int; |
99 double as_double; | 99 double as_double; |
100 const void* as_pointer; | 100 const void* as_pointer; |
101 const char* as_string; | 101 const char* as_string; |
102 }; | 102 }; |
103 | 103 |
104 TraceEvent(); | 104 TraceEvent(); |
105 ~TraceEvent(); | 105 ~TraceEvent(); |
106 | 106 |
| 107 void appendFlowEvent(TraceEvent *flowEvent) { |
| 108 flowEvent_ = flowEvent; |
| 109 } |
| 110 |
107 // We don't need to copy TraceEvent except when TraceEventBuffer is cloned. | 111 // We don't need to copy TraceEvent except when TraceEventBuffer is cloned. |
108 // Use explicit copy method to avoid accidentally misuse of copy. | 112 // Use explicit copy method to avoid accidentally misuse of copy. |
109 void CopyFrom(const TraceEvent& other); | 113 void CopyFrom(const TraceEvent& other); |
110 | 114 |
111 void Initialize( | 115 void Initialize( |
112 int thread_id, | 116 int thread_id, |
113 TraceTicks timestamp, | 117 TraceTicks timestamp, |
114 ThreadTicks thread_timestamp, | 118 ThreadTicks thread_timestamp, |
115 char phase, | 119 char phase, |
116 const unsigned char* category_group_enabled, | 120 const unsigned char* category_group_enabled, |
(...skipping 25 matching lines...) Expand all Loading... |
142 std::string* out); | 146 std::string* out); |
143 | 147 |
144 TraceTicks timestamp() const { return timestamp_; } | 148 TraceTicks timestamp() const { return timestamp_; } |
145 ThreadTicks thread_timestamp() const { return thread_timestamp_; } | 149 ThreadTicks thread_timestamp() const { return thread_timestamp_; } |
146 char phase() const { return phase_; } | 150 char phase() const { return phase_; } |
147 int thread_id() const { return thread_id_; } | 151 int thread_id() const { return thread_id_; } |
148 TimeDelta duration() const { return duration_; } | 152 TimeDelta duration() const { return duration_; } |
149 TimeDelta thread_duration() const { return thread_duration_; } | 153 TimeDelta thread_duration() const { return thread_duration_; } |
150 unsigned long long id() const { return id_; } | 154 unsigned long long id() const { return id_; } |
151 unsigned char flags() const { return flags_; } | 155 unsigned char flags() const { return flags_; } |
| 156 bool isFlowEvent() const; |
152 | 157 |
153 // Exposed for unittesting: | 158 // Exposed for unittesting: |
154 | 159 |
155 const base::RefCountedString* parameter_copy_storage() const { | 160 const base::RefCountedString* parameter_copy_storage() const { |
156 return parameter_copy_storage_.get(); | 161 return parameter_copy_storage_.get(); |
157 } | 162 } |
158 | 163 |
159 const unsigned char* category_group_enabled() const { | 164 const unsigned char* category_group_enabled() const { |
160 return category_group_enabled_; | 165 return category_group_enabled_; |
161 } | 166 } |
(...skipping 16 matching lines...) Expand all Loading... |
178 TraceValue arg_values_[kTraceMaxNumArgs]; | 183 TraceValue arg_values_[kTraceMaxNumArgs]; |
179 const char* arg_names_[kTraceMaxNumArgs]; | 184 const char* arg_names_[kTraceMaxNumArgs]; |
180 scoped_refptr<ConvertableToTraceFormat> convertable_values_[kTraceMaxNumArgs]; | 185 scoped_refptr<ConvertableToTraceFormat> convertable_values_[kTraceMaxNumArgs]; |
181 const unsigned char* category_group_enabled_; | 186 const unsigned char* category_group_enabled_; |
182 const char* name_; | 187 const char* name_; |
183 scoped_refptr<base::RefCountedString> parameter_copy_storage_; | 188 scoped_refptr<base::RefCountedString> parameter_copy_storage_; |
184 int thread_id_; | 189 int thread_id_; |
185 char phase_; | 190 char phase_; |
186 unsigned char flags_; | 191 unsigned char flags_; |
187 unsigned char arg_types_[kTraceMaxNumArgs]; | 192 unsigned char arg_types_[kTraceMaxNumArgs]; |
| 193 TraceEvent *flowEvent_; |
188 | 194 |
189 DISALLOW_COPY_AND_ASSIGN(TraceEvent); | 195 DISALLOW_COPY_AND_ASSIGN(TraceEvent); |
190 }; | 196 }; |
191 | 197 |
192 // TraceBufferChunk is the basic unit of TraceBuffer. | 198 // TraceBufferChunk is the basic unit of TraceBuffer. |
193 class BASE_EXPORT TraceBufferChunk { | 199 class BASE_EXPORT TraceBufferChunk { |
194 public: | 200 public: |
195 explicit TraceBufferChunk(uint32 seq); | 201 explicit TraceBufferChunk(uint32 seq); |
196 ~TraceBufferChunk(); | 202 ~TraceBufferChunk(); |
197 | 203 |
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
702 // Set when asynchronous Flush is in progress. | 708 // Set when asynchronous Flush is in progress. |
703 OutputCallback flush_output_callback_; | 709 OutputCallback flush_output_callback_; |
704 scoped_refptr<SingleThreadTaskRunner> flush_task_runner_; | 710 scoped_refptr<SingleThreadTaskRunner> flush_task_runner_; |
705 TraceEvent::ArgumentFilterPredicate argument_filter_predicate_; | 711 TraceEvent::ArgumentFilterPredicate argument_filter_predicate_; |
706 subtle::AtomicWord generation_; | 712 subtle::AtomicWord generation_; |
707 bool use_worker_thread_; | 713 bool use_worker_thread_; |
708 | 714 |
709 DISALLOW_COPY_AND_ASSIGN(TraceLog); | 715 DISALLOW_COPY_AND_ASSIGN(TraceLog); |
710 }; | 716 }; |
711 | 717 |
| 718 class TraceEventHandleWrapper { |
| 719 public: |
| 720 TraceEventHandleWrapper() { |
| 721 handle_ = {0, 0, 0}; |
| 722 event_ = NULL; |
| 723 } |
| 724 TraceEventHandleWrapper(TraceEventHandle h) { |
| 725 handle_ = h; |
| 726 TraceLog* tracer = base::trace_event::TraceLog::GetInstance(); |
| 727 event_ = tracer->GetEventByHandle(h); |
| 728 } |
| 729 |
| 730 void appendFlowEvent(TraceEventHandle h) { |
| 731 if (event_) { |
| 732 TraceLog* tracer = base::trace_event::TraceLog::GetInstance(); |
| 733 TraceEvent *flowEvent = tracer->GetEventByHandle(h); |
| 734 event_->appendFlowEvent(flowEvent); |
| 735 } |
| 736 } |
| 737 |
| 738 private: |
| 739 TraceEventHandle handle_; |
| 740 TraceEvent *event_; |
| 741 }; |
| 742 |
| 743 |
712 } // namespace trace_event | 744 } // namespace trace_event |
713 } // namespace base | 745 } // namespace base |
714 | 746 |
715 #endif // BASE_TRACE_EVENT_TRACE_EVENT_IMPL_H_ | 747 #endif // BASE_TRACE_EVENT_TRACE_EVENT_IMPL_H_ |
OLD | NEW |