Home | History | Annotate | Download | only in threading
      1 // Copyright (c) 2011 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 // This file contains the implementation shared by
      6 // MessageLoopProxy::PostTaskAndReply and WorkerPool::PostTaskAndReply.
      7 
      8 #ifndef BASE_THREADING_POST_TASK_AND_REPLY_IMPL_H_
      9 #define BASE_THREADING_POST_TASK_AND_REPLY_IMPL_H_
     10 
     11 #include "base/callback_forward.h"
     12 #include "base/location.h"
     13 
     14 namespace base {
     15 namespace internal {
     16 
     17 // Inherit from this in a class that implements PostTask appropriately
     18 // for sending to a destination thread.
     19 //
     20 // Note that 'reply' will always get posted back to your current
     21 // MessageLoop.
     22 //
     23 // If you're looking for a concrete implementation of
     24 // PostTaskAndReply, you probably want base::MessageLoopProxy, or you
     25 // may want base::WorkerPool.
     26 class PostTaskAndReplyImpl {
     27  public:
     28   // Implementation for MessageLoopProxy::PostTaskAndReply and
     29   // WorkerPool::PostTaskAndReply.
     30   bool PostTaskAndReply(const tracked_objects::Location& from_here,
     31                         const Closure& task,
     32                         const Closure& reply);
     33 
     34  private:
     35   virtual bool PostTask(const tracked_objects::Location& from_here,
     36                         const Closure& task) = 0;
     37 };
     38 
     39 }  // namespace internal
     40 }  // namespace base
     41 
     42 #endif  // BASE_THREADING_POST_TASK_AND_REPLY_IMPL_H_
     43