summaryrefslogtreecommitdiff
path: root/include/mbgl/platform/platform_run_loop.hpp
blob: dce328f5d560da970d9767fec1c30f8cf0bdd01a (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
#pragma once

#include <functional>

namespace mbgl {

class PlatformRunLoop {
public:
    virtual ~PlatformRunLoop() = default;

    virtual void *handle() = 0;

    virtual void run() = 0;
    virtual void runOnce() = 0;
    virtual void stop() = 0;

    enum class Event : uint8_t {
        None      = 0,
        Read      = 1,
        Write     = 2,
        ReadWrite = Read | Write,
    };

    virtual void addWatch(int fd, Event, std::function<void(int, Event)>&& callback) = 0;
    virtual void removeWatch(int fd) = 0;
};

} // namespace mbgl