message_pump_default.h revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
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_PUMP_DEFAULT_H_
6#define BASE_MESSAGE_LOOP_MESSAGE_PUMP_DEFAULT_H_
7
8#include "base/message_loop/message_pump.h"
9#include "base/synchronization/waitable_event.h"
10#include "base/time.h"
11
12namespace base {
13
14class MessagePumpDefault : public MessagePump {
15 public:
16  MessagePumpDefault();
17
18  // MessagePump methods:
19  virtual void Run(Delegate* delegate) OVERRIDE;
20  virtual void Quit() OVERRIDE;
21  virtual void ScheduleWork() OVERRIDE;
22  virtual void ScheduleDelayedWork(const TimeTicks& delayed_work_time) OVERRIDE;
23
24 protected:
25  virtual ~MessagePumpDefault() {}
26
27 private:
28  // This flag is set to false when Run should return.
29  bool keep_running_;
30
31  // Used to sleep until there is more work to do.
32  WaitableEvent event_;
33
34  // The time at which we should call DoDelayedWork.
35  TimeTicks delayed_work_time_;
36
37  DISALLOW_COPY_AND_ASSIGN(MessagePumpDefault);
38};
39
40}  // namespace base
41
42#endif  // BASE__MESSAGE_LOOPMESSAGE_PUMP_DEFAULT_H_
43