#ifndef BASE_MESSAGE_LOOP_PROXY_IMPL_H_
#define BASE_MESSAGE_LOOP_PROXY_IMPL_H_
#include "base/base_export.h"
#include "base/message_loop.h"
#include "base/message_loop_proxy.h"
#include "base/synchronization/lock.h"
namespace base {
class BASE_EXPORT MessageLoopProxyImpl : public MessageLoopProxy {
public:
virtual bool PostDelayedTask(const tracked_objects::Location& from_here,
const base::Closure& task,
base::TimeDelta delay) OVERRIDE;
virtual bool PostNonNestableDelayedTask(
const tracked_objects::Location& from_here,
const base::Closure& task,
base::TimeDelta delay) OVERRIDE;
virtual bool RunsTasksOnCurrentThread() const OVERRIDE;
protected:
virtual ~MessageLoopProxyImpl();
virtual void OnDestruct() const OVERRIDE;
private:
friend class ::MessageLoop;
friend class DeleteHelper<MessageLoopProxyImpl>;
MessageLoopProxyImpl();
virtual void WillDestroyCurrentMessageLoop();
bool PostTaskHelper(const tracked_objects::Location& from_here,
const base::Closure& task,
base::TimeDelta delay,
bool nestable);
mutable base::Lock message_loop_lock_;
MessageLoop* target_message_loop_;
DISALLOW_COPY_AND_ASSIGN(MessageLoopProxyImpl);
};
}
#endif