Home | History | Annotate | Download | only in message_loop
      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_MESSAGE_LOOP_MESSAGE_LOOP_PROXY_H_
      6 #define BASE_MESSAGE_LOOP_MESSAGE_LOOP_PROXY_H_
      7 
      8 #include "base/base_export.h"
      9 #include "base/compiler_specific.h"
     10 #include "base/memory/ref_counted.h"
     11 #include "base/single_thread_task_runner.h"
     12 
     13 namespace base {
     14 
     15 // This class provides a thread-safe refcounted interface to the Post* methods
     16 // of a message loop. This class can outlive the target message loop.
     17 // MessageLoopProxy objects are constructed automatically for all MessageLoops.
     18 // So, to access them, you can use any of the following:
     19 //   Thread::message_loop_proxy()
     20 //   MessageLoop::current()->message_loop_proxy()
     21 //   MessageLoopProxy::current()
     22 //
     23 // TODO(akalin): Now that we have the *TaskRunner interfaces, we can
     24 // merge this with MessageLoopProxyImpl.
     25 class BASE_EXPORT MessageLoopProxy : public SingleThreadTaskRunner {
     26  public:
     27   // Gets the MessageLoopProxy for the current message loop, creating one if
     28   // needed.
     29   static scoped_refptr<MessageLoopProxy> current();
     30 
     31  protected:
     32   MessageLoopProxy();
     33   virtual ~MessageLoopProxy();
     34 };
     35 
     36 }  // namespace base
     37 
     38 #endif  // BASE_MESSAGE_LOOP_MESSAGE_LOOP_PROXY_H_
     39