Chromium Code Reviews| Index: base/sequenced_task_runner_impl.cc |
| =================================================================== |
| --- base/sequenced_task_runner_impl.cc (revision 0) |
| +++ base/sequenced_task_runner_impl.cc (revision 0) |
| @@ -0,0 +1,76 @@ |
| +// Copyright (c) 2012 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. |
| + |
| +#include "sequenced_task_runner_impl.h" |
| + |
| +#include "base/logging.h" |
| +#include "base/threading/sequenced_worker_pool.h" |
| + |
| +namespace base { |
| + |
| +// Thin wrapper for SequencedWorkerPool::SequenceToken used to obviate the |
| +// need to include the SequencedWorkerPool header in this file's header. |
| +class SequencedTaskRunnerImpl::SequenceToken { |
| + public: |
| + explicit SequenceToken(const SequencedWorkerPool::SequenceToken token) |
| + : value_(token) { |
| + } |
| + operator SequencedWorkerPool::SequenceToken() const { |
| + return value_; |
| + } |
| + private: |
| + SequencedWorkerPool::SequenceToken value_; |
| +}; |
| + |
| +SequencedTaskRunnerImpl::SequencedTaskRunnerImpl( |
| + scoped_refptr<SequencedWorkerPool> pool) |
| + : pool_(pool), |
| + token_(new SequenceToken(pool_->GetSequenceToken())) { |
| +} |
| + |
| +SequencedTaskRunnerImpl::~SequencedTaskRunnerImpl() { |
| +} |
| + |
| +bool SequencedTaskRunnerImpl::PostDelayedTask( |
| + const tracked_objects::Location& from_here, |
| + const Closure& task, |
| + int64 delay_ms) { |
| + return pool_->PostDelayedTask(from_here, task, delay_ms); |
| +} |
| + |
| +bool SequencedTaskRunnerImpl::PostDelayedTask( |
| + const tracked_objects::Location& from_here, |
| + const Closure& task, |
| + TimeDelta delay) { |
| + return pool_->PostDelayedTask(from_here, task, delay); |
| +} |
| + |
| +bool SequencedTaskRunnerImpl::RunsTasksOnCurrentThread() const { |
| + return pool_->RunsTasksOnCurrentThread(); |
| +} |
| + |
| +bool SequencedTaskRunnerImpl::PostNonNestableDelayedTask( |
| + const tracked_objects::Location& from_here, |
| + const Closure& task, |
| + int64 delay_ms) { |
| + // TODO(francoisk777@gmail.com): Change the following two statements once |
| + // SequencedWorkerPool supports non-zero delays. |
| + DLOG_IF(WARNING, (delay_ms != 0)) << "SequencedTaskRunnerImpl does not yet " |
|
akalin
2012/03/13 07:27:11
probably should change this to NOTREACHED, analogo
Francois
2012/03/14 15:43:31
Done.
|
| + "support non-zero delays; ignoring delay of " << delay_ms << " ms"; |
| + return pool_->PostSequencedWorkerTask(*token_, from_here, task); |
| +} |
| + |
| +bool SequencedTaskRunnerImpl::PostNonNestableDelayedTask( |
| + const tracked_objects::Location& from_here, |
| + const Closure& task, |
| + base::TimeDelta delay) { |
| + // TODO(francoisk777@gmail.com): Change the following two statements once |
| + // SequencedWorkerPool supports non-zero delays. |
| + DLOG_IF(WARNING, (delay.InMillisecondsRoundedUp() != 0)) |
| + << "SequencedTaskRunnerImpl does not yet support non-zero delays; " |
| + "ignoring delay of " << delay.InMillisecondsRoundedUp(); |
| + return pool_->PostSequencedWorkerTask(*token_, from_here, task); |
| +} |
| + |
| +} // namespace base |
| Property changes on: base/sequenced_task_runner_impl.cc |
| ___________________________________________________________________ |
| Added: svn:eol-style |
| + LF |