pending_task.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1// Copyright (c) 2011 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#include "base/pending_task.h" 6 7#include "base/tracked_objects.h" 8 9namespace base { 10 11PendingTask::PendingTask(const tracked_objects::Location& posted_from, 12 const base::Closure& task) 13 : base::TrackingInfo(posted_from, TimeTicks()), 14 task(task), 15 posted_from(posted_from), 16 sequence_num(0), 17 nestable(true), 18 is_high_res(false) { 19} 20 21PendingTask::PendingTask(const tracked_objects::Location& posted_from, 22 const base::Closure& task, 23 TimeTicks delayed_run_time, 24 bool nestable) 25 : base::TrackingInfo(posted_from, delayed_run_time), 26 task(task), 27 posted_from(posted_from), 28 sequence_num(0), 29 nestable(nestable), 30 is_high_res(false) { 31} 32 33PendingTask::~PendingTask() { 34} 35 36bool PendingTask::operator<(const PendingTask& other) const { 37 // Since the top of a priority queue is defined as the "greatest" element, we 38 // need to invert the comparison here. We want the smaller time to be at the 39 // top of the heap. 40 41 if (delayed_run_time < other.delayed_run_time) 42 return false; 43 44 if (delayed_run_time > other.delayed_run_time) 45 return true; 46 47 // If the times happen to match, then we use the sequence number to decide. 48 // Compare the difference to support integer roll-over. 49 return (sequence_num - other.sequence_num) > 0; 50} 51 52void TaskQueue::Swap(TaskQueue* queue) { 53 c.swap(queue->c); // Calls std::deque::swap. 54} 55 56} // namespace base 57