Home | History | Annotate | Download | only in base
      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_
     56