| Index: base/threading/sequenced_worker_pool.cc
|
| diff --git a/base/threading/sequenced_worker_pool.cc b/base/threading/sequenced_worker_pool.cc
|
| index fb71efeaea89c2f901a2e87ecebca02e25f45c39..e0a36c66b84105960c2c79e588e27e308fbe71ac 100644
|
| --- a/base/threading/sequenced_worker_pool.cc
|
| +++ b/base/threading/sequenced_worker_pool.cc
|
| @@ -117,6 +117,14 @@ struct SequencedTaskLessThan {
|
| }
|
| };
|
|
|
| +// Create a process-wide unique ID to represent this task in trace events. This
|
| +// will be mangled with a Process ID hash to reduce the likelyhood of colliding
|
| +// with MessageLoop pointers on other processes.
|
| +uint64_t GetTaskTraceID(const SequencedTask& task, void* pool) {
|
| + return (static_cast<uint64_t>(task.trace_id) << 32) |
|
| + static_cast<uint64_t>(reinterpret_cast<intptr_t>(pool));
|
| +}
|
| +
|
| // SequencedWorkerPoolTaskRunner ---------------------------------------------
|
| // A TaskRunner which posts tasks to a SequencedWorkerPool with a
|
| // fixed ShutdownBehavior.
|
| @@ -167,14 +175,17 @@ bool SequencedWorkerPoolTaskRunner::RunsTasksOnCurrentThread() const {
|
| return pool_->RunsTasksOnCurrentThread();
|
| }
|
|
|
| -// SequencedWorkerPoolSequencedTaskRunner ------------------------------------
|
| +} // namespace
|
| +
|
| +// SequencedWorkerPool::PoolSequencedTaskRunner ------------------------------
|
| // A SequencedTaskRunner which posts tasks to a SequencedWorkerPool with a
|
| // fixed sequence token.
|
| //
|
| // Note that this class is RefCountedThreadSafe (inherited from TaskRunner).
|
| -class SequencedWorkerPoolSequencedTaskRunner : public SequencedTaskRunner {
|
| +class SequencedWorkerPool::PoolSequencedTaskRunner
|
| + : public SequencedTaskRunner {
|
| public:
|
| - SequencedWorkerPoolSequencedTaskRunner(
|
| + PoolSequencedTaskRunner(
|
| scoped_refptr<SequencedWorkerPool> pool,
|
| SequencedWorkerPool::SequenceToken token,
|
| SequencedWorkerPool::WorkerShutdown shutdown_behavior);
|
| @@ -191,7 +202,7 @@ class SequencedWorkerPoolSequencedTaskRunner : public SequencedTaskRunner {
|
| TimeDelta delay) override;
|
|
|
| private:
|
| - ~SequencedWorkerPoolSequencedTaskRunner() override;
|
| + ~PoolSequencedTaskRunner() override;
|
|
|
| const scoped_refptr<SequencedWorkerPool> pool_;
|
|
|
| @@ -199,25 +210,25 @@ class SequencedWorkerPoolSequencedTaskRunner : public SequencedTaskRunner {
|
|
|
| const SequencedWorkerPool::WorkerShutdown shutdown_behavior_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(SequencedWorkerPoolSequencedTaskRunner);
|
| + DISALLOW_COPY_AND_ASSIGN(PoolSequencedTaskRunner);
|
| };
|
|
|
| -SequencedWorkerPoolSequencedTaskRunner::SequencedWorkerPoolSequencedTaskRunner(
|
| - scoped_refptr<SequencedWorkerPool> pool,
|
| - SequencedWorkerPool::SequenceToken token,
|
| - SequencedWorkerPool::WorkerShutdown shutdown_behavior)
|
| +SequencedWorkerPool::PoolSequencedTaskRunner::
|
| + PoolSequencedTaskRunner(
|
| + scoped_refptr<SequencedWorkerPool> pool,
|
| + SequencedWorkerPool::SequenceToken token,
|
| + SequencedWorkerPool::WorkerShutdown shutdown_behavior)
|
| : pool_(std::move(pool)),
|
| token_(token),
|
| shutdown_behavior_(shutdown_behavior) {}
|
|
|
| -SequencedWorkerPoolSequencedTaskRunner::
|
| -~SequencedWorkerPoolSequencedTaskRunner() {
|
| -}
|
| +SequencedWorkerPool::PoolSequencedTaskRunner::
|
| + ~PoolSequencedTaskRunner() = default;
|
|
|
| -bool SequencedWorkerPoolSequencedTaskRunner::PostDelayedTask(
|
| - const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| - TimeDelta delay) {
|
| +bool SequencedWorkerPool::PoolSequencedTaskRunner::
|
| + PostDelayedTask(const tracked_objects::Location& from_here,
|
| + const Closure& task,
|
| + TimeDelta delay) {
|
| if (delay.is_zero()) {
|
| return pool_->PostSequencedWorkerTaskWithShutdownBehavior(
|
| token_, from_here, task, shutdown_behavior_);
|
| @@ -225,29 +236,20 @@ bool SequencedWorkerPoolSequencedTaskRunner::PostDelayedTask(
|
| return pool_->PostDelayedSequencedWorkerTask(token_, from_here, task, delay);
|
| }
|
|
|
| -bool SequencedWorkerPoolSequencedTaskRunner::RunsTasksOnCurrentThread() const {
|
| +bool SequencedWorkerPool::PoolSequencedTaskRunner::
|
| + RunsTasksOnCurrentThread() const {
|
| return pool_->IsRunningSequenceOnCurrentThread(token_);
|
| }
|
|
|
| -bool SequencedWorkerPoolSequencedTaskRunner::PostNonNestableDelayedTask(
|
| - const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| - TimeDelta delay) {
|
| +bool SequencedWorkerPool::PoolSequencedTaskRunner::
|
| + PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
|
| + const Closure& task,
|
| + TimeDelta delay) {
|
| // There's no way to run nested tasks, so simply forward to
|
| // PostDelayedTask.
|
| return PostDelayedTask(from_here, task, delay);
|
| }
|
|
|
| -// Create a process-wide unique ID to represent this task in trace events. This
|
| -// will be mangled with a Process ID hash to reduce the likelyhood of colliding
|
| -// with MessageLoop pointers on other processes.
|
| -uint64_t GetTaskTraceID(const SequencedTask& task, void* pool) {
|
| - return (static_cast<uint64_t>(task.trace_id) << 32) |
|
| - static_cast<uint64_t>(reinterpret_cast<intptr_t>(pool));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| // Worker ---------------------------------------------------------------------
|
|
|
| class SequencedWorkerPool::Worker : public SimpleThread {
|
| @@ -1471,7 +1473,7 @@ scoped_refptr<SequencedTaskRunner> SequencedWorkerPool::GetSequencedTaskRunner(
|
| scoped_refptr<SequencedTaskRunner>
|
| SequencedWorkerPool::GetSequencedTaskRunnerWithShutdownBehavior(
|
| SequenceToken token, WorkerShutdown shutdown_behavior) {
|
| - return new SequencedWorkerPoolSequencedTaskRunner(
|
| + return new PoolSequencedTaskRunner(
|
| this, token, shutdown_behavior);
|
| }
|
|
|
| @@ -1554,11 +1556,6 @@ bool SequencedWorkerPool::RunsTasksOnCurrentThread() const {
|
| return inner_->RunsTasksOnCurrentThread();
|
| }
|
|
|
| -bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread(
|
| - SequenceToken sequence_token) const {
|
| - return inner_->IsRunningSequenceOnCurrentThread(sequence_token);
|
| -}
|
| -
|
| void SequencedWorkerPool::FlushForTesting() {
|
| inner_->CleanupForTesting();
|
| }
|
| @@ -1576,4 +1573,9 @@ bool SequencedWorkerPool::IsShutdownInProgress() {
|
| return inner_->IsShutdownInProgress();
|
| }
|
|
|
| +bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread(
|
| + SequenceToken sequence_token) const {
|
| + return inner_->IsRunningSequenceOnCurrentThread(sequence_token);
|
| +}
|
| +
|
| } // namespace base
|
|
|