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_IMPL_H_
      6 #define BASE_MESSAGE_LOOP_MESSAGE_LOOP_PROXY_IMPL_H_
      7 
      8 #include "base/base_export.h"
      9 #include "base/memory/ref_counted.h"
     10 #include "base/message_loop/message_loop_proxy.h"
     11 #include "base/pending_task.h"
     12 #include "base/threading/platform_thread.h"
     13 
     14 namespace base {
     15 namespace internal {
     16 
     17 class IncomingTaskQueue;
     18 
     19 // A stock implementation of MessageLoopProxy that is created and managed by a
     20 // MessageLoop. For now a MessageLoopProxyImpl can only be created as part of a
     21 // MessageLoop.
     22 class BASE_EXPORT MessageLoopProxyImpl : public MessageLoopProxy {
     23  public:
     24   explicit MessageLoopProxyImpl(
     25       scoped_refptr<IncomingTaskQueue> incoming_queue);
     26 
     27   // MessageLoopProxy implementation
     28   virtual bool PostDelayedTask(const tracked_objects::Location& from_here,
     29                                const base::Closure& task,
     30                                base::TimeDelta delay) OVERRIDE;
     31   virtual bool PostNonNestableDelayedTask(
     32       const tracked_objects::Location& from_here,
     33       const base::Closure& task,
     34       base::TimeDelta delay) OVERRIDE;
     35   virtual bool RunsTasksOnCurrentThread() const OVERRIDE;
     36 
     37  private:
     38   friend class RefCountedThreadSafe<MessageLoopProxyImpl>;
     39   virtual ~MessageLoopProxyImpl();
     40 
     41   // THe incoming queue receiving all posted tasks.
     42   scoped_refptr<IncomingTaskQueue> incoming_queue_;
     43 
     44   // ID of the thread |this| was created on.
     45   PlatformThreadId valid_thread_id_;
     46 
     47   DISALLOW_COPY_AND_ASSIGN(MessageLoopProxyImpl);
     48 };
     49 
     50 }  // namespace internal
     51 }  // namespace base
     52 
     53 #endif  // BASE_MESSAGE_LOOP_MESSAGE_LOOP_PROXY_IMPL_H_
     54