1// Copyright 2014 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 UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_
6#define UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_
7
8#include "base/callback.h"
9#include "base/files/file_path.h"
10#include "base/message_loop/message_loop.h"
11#include "ui/events/ozone/evdev/events_ozone_evdev_export.h"
12
13namespace ui {
14
15class Event;
16
17typedef base::Callback<void(Event*)> EventDispatchCallback;
18
19class EVENTS_OZONE_EVDEV_EXPORT EventConverterEvdev
20    : public base::MessagePumpLibevent::Watcher {
21 public:
22  EventConverterEvdev(int fd, const base::FilePath& path);
23  virtual ~EventConverterEvdev();
24
25  // Start reading events.
26  void Start();
27
28  // Stop reading events.
29  void Stop();
30
31 protected:
32  // base::MessagePumpLibevent::Watcher:
33  virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE;
34
35  // File descriptor to read.
36  int fd_;
37
38  // Path to input device.
39  base::FilePath path_;
40
41  // Controller for watching the input fd.
42  base::MessagePumpLibevent::FileDescriptorWatcher controller_;
43
44 private:
45  DISALLOW_COPY_AND_ASSIGN(EventConverterEvdev);
46};
47
48}  // namespace ui
49
50#endif  // UI_EVENTS_OZONE_EVDEV_EVENT_CONVERTER_EVDEV_H_
51