Home | History | Annotate | Download | only in base
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef BASE_THREAD_TASK_RUNNER_HANDLE_H_
      6 #define BASE_THREAD_TASK_RUNNER_HANDLE_H_
      7 
      8 #include "base/base_export.h"
      9 #include "base/memory/ref_counted.h"
     10 
     11 namespace base {
     12 
     13 class SingleThreadTaskRunner;
     14 
     15 // ThreadTaskRunnerHandle stores a reference to a thread's TaskRunner
     16 // in thread-local storage.  Callers can then retrieve the TaskRunner
     17 // for the current thread by calling ThreadTaskRunnerHandle::Get().
     18 // At most one TaskRunner may be bound to each thread at a time.
     19 class BASE_EXPORT ThreadTaskRunnerHandle {
     20  public:
     21   // Gets the SingleThreadTaskRunner for the current thread.
     22   static scoped_refptr<SingleThreadTaskRunner> Get();
     23 
     24   // Returns true if the SingleThreadTaskRunner is already created for
     25   // the current thread.
     26   static bool IsSet();
     27 
     28   // Binds |task_runner| to the current thread. |task_runner| must belong
     29   // to the current thread for this to succeed.
     30   explicit ThreadTaskRunnerHandle(
     31       const scoped_refptr<SingleThreadTaskRunner>& task_runner);
     32   ~ThreadTaskRunnerHandle();
     33 
     34  private:
     35   scoped_refptr<SingleThreadTaskRunner> task_runner_;
     36 };
     37 
     38 }  // namespace base
     39 
     40 #endif  // BASE_THREAD_TASK_RUNNER_HANDLE_H_
     41