blob: ac4d1219205e4432bf398c742d66191b92fb89b2 [file] [log] [blame]
// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef APMANAGER_EVENT_DISPATCHER_H_
#define APMANAGER_EVENT_DISPATCHER_H_
#include <base/callback.h>
#include <base/lazy_instance.h>
namespace apmanager {
// Singleton class for dispatching tasks to current message loop.
class EventDispatcher {
public:
virtual ~EventDispatcher();
// This is a singleton. Use EventDispatcher::GetInstance()->Foo().
static EventDispatcher* GetInstance();
// These are thin wrappers around calls of the same name in
// <base/message_loop_proxy.h>
virtual bool PostTask(const base::Closure& task);
virtual bool PostDelayedTask(const base::Closure& task,
int64_t delay_ms);
protected:
EventDispatcher();
private:
friend struct base::DefaultLazyInstanceTraits<EventDispatcher>;
DISALLOW_COPY_AND_ASSIGN(EventDispatcher);
};
} // namespace apmanager
#endif // APMANAGER_EVENT_DISPATCHER_H_