blob: 731522008a52b7d0f0a5265d9cc7b2f5cec05bda (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
// -*- mode: c++; c-basic-offset: 2; -*-
#ifndef LOOPER_HH
#define LOOPER_HH
#include <chrono>
#include <functional>
class Looper {
public:
typedef std::chrono::steady_clock clock;
typedef std::function<void(int, uint8_t)> FdCallback;
typedef std::function<void(void*)> ScheduleCallback;
virtual ~Looper() { }
static const uint8_t EVENT_READ;
static const uint8_t EVENT_WRITE;
// Always reported, need not be set
static const uint8_t EVENT_HUP;
static const uint8_t EVENT_ERROR;
static Looper* create();
virtual void add(int fd, uint8_t events, FdCallback const& callback) = 0;
virtual void modify(int fd, uint8_t events) = 0;
virtual void remove(int fd) = 0;
virtual void* schedule(float delay_s, ScheduleCallback const& callback) = 0;
virtual void cancel(void* handle) = 0;
virtual bool run() = 0;
virtual void quit() = 0;
virtual clock::time_point now() const = 0;
protected:
Looper() { }
Looper(Looper const&) = delete;
};
#endif // LOOPER_HH
|