Chromium Code Reviews| Index: components/scheduler/base/delayed_task_delegate.h |
| diff --git a/components/scheduler/base/delayed_task_delegate.h b/components/scheduler/base/delayed_task_delegate.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e9d65b26f7ea09944e76dfdb58fabdc59308576e |
| --- /dev/null |
| +++ b/components/scheduler/base/delayed_task_delegate.h |
| @@ -0,0 +1,70 @@ |
| +// Copyright 2015 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. |
| + |
| +#ifndef COMPONENTS_SCHEDULER_BASE_DELAYED_TASK_DELEGATE_H_ |
| +#define COMPONENTS_SCHEDULER_BASE_DELAYED_TASK_DELEGATE_H_ |
| + |
| +#include <map> |
| + |
| +#include "base/macros.h" |
| +#include "base/memory/ref_counted.h" |
| +#include "base/time/time.h" |
| +#include "components/scheduler/scheduler_export.h" |
| + |
| +namespace scheduler { |
| +namespace internal { |
| +class TaskQueueImpl; |
| +} // namespace internal |
| + |
| +class SCHEDULER_EXPORT DelayedTaskDelegate |
|
Sami
2015/11/17 10:31:06
This class exposes public functions that deal with
alex clarke (OOO till 29th)
2015/11/18 15:30:15
We made them private as discussed offline.
|
| + : public base::RefCounted<DelayedTaskDelegate> { |
| + public: |
| + DelayedTaskDelegate(); |
| + |
| + // Returns the most recent cached Now, records a new cache entry if there |
| + // isn't one. |
| + virtual base::TimeTicks CachedNow() = 0; |
| + |
| + // Clears the cahced Now. Causes the next call to |CachedNow| to sample Now |
| + // which can be moderately expensive. |
| + virtual void InvalidateNowCache() = 0; |
|
Sami
2015/11/17 10:31:06
I kinda prefer the earlier way of passing around a
alex clarke (OOO till 29th)
2015/11/18 15:30:15
Done.
|
| + |
| + // Schedules a call to TaskQueueImpl::MoveReadyDelayedTasksToIncomingQueue |
| + // to run at |delayed_run_time|. |
| + void ScheduleDelayedWork(internal::TaskQueueImpl* queue, |
| + base::TimeTicks delayed_run_time); |
| + |
| + // Cancels all scheduled callbacks to |queue|. |
| + void CancelDelayedWork(internal::TaskQueueImpl* queue); |
| + |
| + // Call TaskQueueImpl::MoveReadyDelayedTasksToIncomingQueue for each |
| + // queue where the delay has elapsed. |
| + void WakeupReadyDelayedQueues(); |
| + |
| + protected: |
| + friend class base::RefCounted<DelayedTaskDelegate>; |
| + |
| + virtual ~DelayedTaskDelegate(); |
| + |
| + // Function calling ScheduleDelayedWork that's suitable for use in base::Bind. |
| + void ScheduleDelayedWorkTask(scoped_refptr<internal::TaskQueueImpl> queue, |
| + base::TimeTicks delayed_run_time); |
| + |
| + virtual bool BelongsToCurrentThread() const = 0; |
| + virtual void PostScheduleDelayedWorkTaskOnMainThread( |
| + internal::TaskQueueImpl* queue, |
| + base::TimeTicks delayed_run_time) = 0; |
| + virtual void ScheduleDoWork(base::TimeDelta delay) = 0; |
| + |
| + typedef std::multimap<base::TimeTicks, internal::TaskQueueImpl*> |
| + DelayedWakeupMultimap; |
| + |
| + DelayedWakeupMultimap delayed_wakeup_multimap_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(DelayedTaskDelegate); |
| +}; |
| + |
| +} // namespace scheduler |
| + |
| +#endif // COMPONENTS_SCHEDULER_BASE_DELAYED_TASK_DELEGATE_H_ |