Chromium Code Reviews| Index: base/sequence_checker_impl.h |
| diff --git a/base/sequence_checker_impl.h b/base/sequence_checker_impl.h |
| index ccd119831f5abe9eb2c53a8606430610cf4c97cc..916c7d3d2a3f3780ec8e5fcb68318043524300c3 100644 |
| --- a/base/sequence_checker_impl.h |
| +++ b/base/sequence_checker_impl.h |
| @@ -1,4 +1,4 @@ |
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Copyright 2013 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. |
| @@ -7,48 +7,43 @@ |
| #include "base/base_export.h" |
| #include "base/basictypes.h" |
| -#include "base/memory/ref_counted.h" |
| #include "base/synchronization/lock.h" |
| +#include "base/threading/sequenced_worker_pool.h" |
| #include "base/threading/thread_checker_impl.h" |
| namespace base { |
| -class SequencedTaskRunner; |
| - |
| // SequenceCheckerImpl is used to help verify that some methods of a |
| // class are called in sequence -- that is, called from the same |
| // SequencedTaskRunner. It is a generalization of ThreadChecker; in |
| -// particular, it behaves exactly like ThreadChecker if its passed a |
| -// NULL SequencedTaskRunner. |
| +// particular, it behaves exactly like ThreadChecker if constructed |
| +// on a thread that is not part of a SequencedWorkerPool. |
| class BASE_EXPORT SequenceCheckerImpl { |
| public: |
| - // |sequenced_task_runner| can be NULL. In that case, this object |
| - // behaves exactly like a ThreadChecker bound to the current thread, |
| - // i.e. CalledOnValidSequence() behaves like CalledOnValidThread(). |
| - explicit SequenceCheckerImpl( |
| - const scoped_refptr<SequencedTaskRunner>& sequenced_task_runner); |
| + SequenceCheckerImpl(); |
| ~SequenceCheckerImpl(); |
| - // Returns whether the we are being called on the underyling |
| - // SequencedTaskRunner. If we're not bound to a |
| - // |sequenced_task_runner|, returns whether we are being called on |
| - // the underlying ThreadChecker's thread. |
| + // Returns whether the we are being called on the same sequence token |
| + // as previous calls. If there is no associated sequence, then returns |
| + // whether we are being called on the underlying ThreadChecker's thread. |
| bool CalledOnValidSequence() const; |
| - // Changes the underyling SequencedTaskRunner. |
| - // |sequenced_task_runner| can be NULL. In that case, this object |
| - // behaves exactly like a ThreadChecker that has been detached from |
| - // its thread, i.e. we will be bound to the thread on which we next |
| - // call CalledOnValidSequence(). |
| - void ChangeSequence( |
| - const scoped_refptr<SequencedTaskRunner>& sequenced_task_runner); |
| + // Unbinds the checker from the currently associated sequence. The |
| + // checker will be re-bound on the next call to CalledOnValidSequence(). |
| + void DetachFromSequence(); |
| + |
| + protected: |
|
vandebo (ex-Chrome)
2013/06/28 21:00:06
why not private?
tommycli
2013/06/28 22:37:07
Done.
|
| + void EnsureSequenceTokenAssigned() const; |
| - private: |
| // Guards all variables below. |
| mutable Lock lock_; |
| - scoped_refptr<SequencedTaskRunner> sequenced_task_runner_; |
| - // Used if |sequenced_task_runner_| is NULL. |
| + |
| + // Used if |associated_pool_| is NULL. |
| ThreadCheckerImpl thread_checker_; |
| + mutable bool sequence_token_assigned_; |
| + |
| + mutable SequencedWorkerPool* associated_pool_; |
|
vandebo (ex-Chrome)
2013/06/28 21:00:06
nit: pool_
tommycli
2013/06/28 22:37:07
Done.
|
| + mutable SequencedWorkerPool::SequenceToken sequence_token_; |
| DISALLOW_COPY_AND_ASSIGN(SequenceCheckerImpl); |
| }; |