Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(424)

Unified Diff: base/task_scheduler/utils.cc

Issue 1806473002: TaskScheduler [9] Delayed Task Manager (Closed) Base URL: https://luckyluke-private.googlesource.com/src@s_5_worker_thread
Patch Set: self review Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/task_scheduler/utils.cc
diff --git a/base/task_scheduler/utils.cc b/base/task_scheduler/utils.cc
index d43028fe7773dcf82199470d98bb971d58393220..3623b438f83e373aa9fba0f2289208da1600cb6b 100644
--- a/base/task_scheduler/utils.cc
+++ b/base/task_scheduler/utils.cc
@@ -8,6 +8,7 @@
#include "base/logging.h"
#include "base/memory/ptr_util.h"
+#include "base/task_scheduler/delayed_task_manager.h"
#include "base/task_scheduler/priority_queue.h"
#include "base/task_scheduler/sequence_sort_key.h"
#include "base/task_scheduler/task_tracker.h"
@@ -15,17 +16,12 @@
namespace base {
namespace internal {
-bool PostTaskHelper(std::unique_ptr<Task> task,
- scoped_refptr<Sequence> sequence,
- PriorityQueue* priority_queue,
- TaskTracker* task_tracker) {
+void BASE_EXPORT PostTaskNowHelper(std::unique_ptr<Task> task,
+ scoped_refptr<Sequence> sequence,
+ PriorityQueue* priority_queue) {
DCHECK(task);
DCHECK(sequence);
DCHECK(priority_queue);
- DCHECK(task_tracker);
-
- if (!task_tracker->WillPostTask(task.get()))
- return false;
const bool sequence_was_empty = sequence->PushTask(std::move(task));
if (sequence_was_empty) {
@@ -39,6 +35,27 @@ bool PostTaskHelper(std::unique_ptr<Task> task,
WrapUnique(new PriorityQueue::SequenceAndSortKey(std::move(sequence),
sequence_sort_key)));
}
+}
+
+bool PostTaskHelper(std::unique_ptr<Task> task,
+ scoped_refptr<Sequence> sequence,
+ PriorityQueue* priority_queue,
+ TaskTracker* task_tracker,
+ DelayedTaskManager* delayed_task_manager) {
+ DCHECK(task);
+ DCHECK(sequence);
+ DCHECK(priority_queue);
+ DCHECK(task_tracker);
+
+ if (!task_tracker->WillPostTask(task.get()))
+ return false;
+
+ if (task->delayed_run_time.is_null()) {
+ PostTaskNowHelper(std::move(task), std::move(sequence), priority_queue);
+ } else {
+ delayed_task_manager->AddDelayedTask(std::move(task), std::move(sequence),
+ priority_queue);
+ }
return true;
}

Powered by Google App Engine
This is Rietveld 408576698