|
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 |
|
3 // found in the LICENSE file. |
|
4 |
|
5 // This is a simple struct with tracking information that is stored |
|
6 // with a PendingTask (when message_loop is handling the task). |
|
7 // Only the information that is shared with the profiler in tracked_objects |
|
8 // are included in this structure. |
|
9 |
|
10 |
|
11 #ifndef BASE_TRACKING_INFO_H_ |
|
12 #define BASE_TRACKING_INFO_H_ |
|
13 |
|
14 #include "base/base_export.h" |
|
15 #include "base/profiler/tracked_time.h" |
|
16 #include "base/time/time.h" |
|
17 |
|
18 namespace tracked_objects { |
|
19 class Location; |
|
20 class Births; |
|
21 } |
|
22 |
|
23 namespace base { |
|
24 |
|
25 // This structure is copied around by value. |
|
26 struct BASE_EXPORT TrackingInfo { |
|
27 TrackingInfo(); |
|
28 TrackingInfo(const tracked_objects::Location& posted_from, |
|
29 base::TimeTicks delayed_run_time); |
|
30 ~TrackingInfo(); |
|
31 |
|
32 // To avoid conflating our stats with the delay duration in a PostDelayedTask, |
|
33 // we identify such tasks, and replace their post_time with the time they |
|
34 // were scheduled (requested?) to emerge from the delayed task queue. This |
|
35 // means that queuing delay for such tasks will show how long they went |
|
36 // unserviced, after they *could* be serviced. This is the same stat as we |
|
37 // have for non-delayed tasks, and we consistently call it queuing delay. |
|
38 tracked_objects::TrackedTime EffectiveTimePosted() const { |
|
39 return tracked_objects::TrackedTime( |
|
40 delayed_run_time.is_null() ? time_posted : delayed_run_time); |
|
41 } |
|
42 |
|
43 // Record of location and thread that the task came from. |
|
44 tracked_objects::Births* birth_tally; |
|
45 |
|
46 // Time when the related task was posted. |
|
47 base::TimeTicks time_posted; |
|
48 |
|
49 // The time when the task should be run. |
|
50 base::TimeTicks delayed_run_time; |
|
51 }; |
|
52 |
|
53 } // namespace base |
|
54 |
|
55 #endif // BASE_TRACKING_INFO_H_ |