• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
EffectiveTimePostedTrackingInfo38   tracked_objects::TrackedTime EffectiveTimePosted() const {
39     return delayed_run_time.is_null()
40                ? time_posted
41                : tracked_objects::TrackedTime(delayed_run_time);
42   }
43 
44   // Record of location and thread that the task came from.
45   tracked_objects::Births* birth_tally;
46 
47   // Time when the related task was posted. Note that this value may be empty
48   // if task profiling is disabled, and should only be used in conjunction with
49   // profiling-related reporting.
50   tracked_objects::TrackedTime time_posted;
51 
52   // The time when the task should be run.
53   base::TimeTicks delayed_run_time;
54 };
55 
56 }  // namespace base
57 
58 #endif  // BASE_TRACKING_INFO_H_
59