55 lines
1.8 KiB
C
55 lines
1.8 KiB
C
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
// This is a simple struct with tracking information that is stored
|
||
|
// with a PendingTask (when message_loop is handling the task).
|
||
|
// Only the information that is shared with the profiler in tracked_objects
|
||
|
// are included in this structure.
|
||
|
|
||
|
|
||
|
#ifndef BASE_TRACKING_INFO_H_
|
||
|
#define BASE_TRACKING_INFO_H_
|
||
|
|
||
|
#include "base/profiler/tracked_time.h"
|
||
|
#include "base/time/time.h"
|
||
|
|
||
|
namespace tracked_objects {
|
||
|
class Location;
|
||
|
class Births;
|
||
|
}
|
||
|
|
||
|
namespace base {
|
||
|
|
||
|
// This structure is copied around by value.
|
||
|
struct BASE_EXPORT TrackingInfo {
|
||
|
TrackingInfo();
|
||
|
TrackingInfo(const tracked_objects::Location& posted_from,
|
||
|
base::TimeTicks delayed_run_time);
|
||
|
~TrackingInfo();
|
||
|
|
||
|
// To avoid conflating our stats with the delay duration in a PostDelayedTask,
|
||
|
// we identify such tasks, and replace their post_time with the time they
|
||
|
// were scheduled (requested?) to emerge from the delayed task queue. This
|
||
|
// means that queuing delay for such tasks will show how long they went
|
||
|
// unserviced, after they *could* be serviced. This is the same stat as we
|
||
|
// have for non-delayed tasks, and we consistently call it queuing delay.
|
||
|
tracked_objects::TrackedTime EffectiveTimePosted() const {
|
||
|
return tracked_objects::TrackedTime(
|
||
|
delayed_run_time.is_null() ? time_posted : delayed_run_time);
|
||
|
}
|
||
|
|
||
|
// Record of location and thread that the task came from.
|
||
|
tracked_objects::Births* birth_tally;
|
||
|
|
||
|
// Time when the related task was posted.
|
||
|
base::TimeTicks time_posted;
|
||
|
|
||
|
// The time when the task should be run.
|
||
|
base::TimeTicks delayed_run_time;
|
||
|
};
|
||
|
|
||
|
} // namespace base
|
||
|
|
||
|
#endif // BASE_TRACKING_INFO_H_
|