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

Side by Side Diff: base/task_scheduler/task_scheduler_impl.cc

Issue 2613703003: Add base::PostDelayedTask(WithTraits). (Closed)
Patch Set: self-review Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/task_scheduler/task_scheduler_impl.h" 5 #include "base/task_scheduler/task_scheduler_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/task_scheduler/delayed_task_manager.h" 12 #include "base/task_scheduler/delayed_task_manager.h"
13 #include "base/task_scheduler/scheduler_worker_pool_params.h" 13 #include "base/task_scheduler/scheduler_worker_pool_params.h"
14 #include "base/task_scheduler/sequence_sort_key.h" 14 #include "base/task_scheduler/sequence_sort_key.h"
15 #include "base/task_scheduler/task.h" 15 #include "base/task_scheduler/task.h"
16 #include "base/task_scheduler/task_tracker.h" 16 #include "base/task_scheduler/task_tracker.h"
17 #include "base/time/time.h"
18 #include "build/build_config.h" 17 #include "build/build_config.h"
19 18
20 #if defined(OS_POSIX) && !defined(OS_NACL_SFI) 19 #if defined(OS_POSIX) && !defined(OS_NACL_SFI)
21 #include "base/task_scheduler/task_tracker_posix.h" 20 #include "base/task_scheduler/task_tracker_posix.h"
22 #endif 21 #endif
23 22
24 namespace base { 23 namespace base {
25 namespace internal { 24 namespace internal {
26 25
27 // static 26 // static
28 std::unique_ptr<TaskSchedulerImpl> TaskSchedulerImpl::Create( 27 std::unique_ptr<TaskSchedulerImpl> TaskSchedulerImpl::Create(
29 const std::vector<SchedulerWorkerPoolParams>& worker_pool_params_vector, 28 const std::vector<SchedulerWorkerPoolParams>& worker_pool_params_vector,
30 const WorkerPoolIndexForTraitsCallback& 29 const WorkerPoolIndexForTraitsCallback&
31 worker_pool_index_for_traits_callback) { 30 worker_pool_index_for_traits_callback) {
32 std::unique_ptr<TaskSchedulerImpl> scheduler( 31 std::unique_ptr<TaskSchedulerImpl> scheduler(
33 new TaskSchedulerImpl(worker_pool_index_for_traits_callback)); 32 new TaskSchedulerImpl(worker_pool_index_for_traits_callback));
34 scheduler->Initialize(worker_pool_params_vector); 33 scheduler->Initialize(worker_pool_params_vector);
35 return scheduler; 34 return scheduler;
36 } 35 }
37 36
38 TaskSchedulerImpl::~TaskSchedulerImpl() { 37 TaskSchedulerImpl::~TaskSchedulerImpl() {
39 #if DCHECK_IS_ON() 38 #if DCHECK_IS_ON()
40 DCHECK(join_for_testing_returned_.IsSet()); 39 DCHECK(join_for_testing_returned_.IsSet());
41 #endif 40 #endif
42 } 41 }
43 42
44 void TaskSchedulerImpl::PostTaskWithTraits( 43 void TaskSchedulerImpl::PostDelayedTaskWithTraits(
45 const tracked_objects::Location& from_here, 44 const tracked_objects::Location& from_here,
46 const TaskTraits& traits, 45 const TaskTraits& traits,
47 const Closure& task) { 46 const Closure& task,
47 TimeDelta delay) {
48 // Post |task| as part of a one-off single-task Sequence. 48 // Post |task| as part of a one-off single-task Sequence.
49 GetWorkerPoolForTraits(traits)->PostTaskWithSequence( 49 GetWorkerPoolForTraits(traits)->PostTaskWithSequence(
50 MakeUnique<Task>(from_here, task, traits, TimeDelta()), 50 MakeUnique<Task>(from_here, task, traits, delay),
51 make_scoped_refptr(new Sequence), nullptr); 51 make_scoped_refptr(new Sequence), nullptr);
52 } 52 }
53 53
54 scoped_refptr<TaskRunner> TaskSchedulerImpl::CreateTaskRunnerWithTraits( 54 scoped_refptr<TaskRunner> TaskSchedulerImpl::CreateTaskRunnerWithTraits(
55 const TaskTraits& traits) { 55 const TaskTraits& traits) {
56 return GetWorkerPoolForTraits(traits)->CreateTaskRunnerWithTraits(traits); 56 return GetWorkerPoolForTraits(traits)->CreateTaskRunnerWithTraits(traits);
57 } 57 }
58 58
59 scoped_refptr<SequencedTaskRunner> 59 scoped_refptr<SequencedTaskRunner>
60 TaskSchedulerImpl::CreateSequencedTaskRunnerWithTraits( 60 TaskSchedulerImpl::CreateSequencedTaskRunnerWithTraits(
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 // in |sequence|. 177 // in |sequence|.
178 const TaskTraits traits = 178 const TaskTraits traits =
179 sequence->PeekTaskTraits().WithPriority(sort_key.priority()); 179 sequence->PeekTaskTraits().WithPriority(sort_key.priority());
180 180
181 GetWorkerPoolForTraits(traits)->ReEnqueueSequence(std::move(sequence), 181 GetWorkerPoolForTraits(traits)->ReEnqueueSequence(std::move(sequence),
182 sort_key); 182 sort_key);
183 } 183 }
184 184
185 } // namespace internal 185 } // namespace internal
186 } // namespace base 186 } // namespace base
OLDNEW
« no previous file with comments | « base/task_scheduler/task_scheduler_impl.h ('k') | base/task_scheduler/task_scheduler_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698