Vanetza
Loading...
Searching...
No Matches
asio_event_port.hpp
1#pragma once
2#include <boost/asio/io_context.hpp>
3#include <boost/asio/steady_timer.hpp>
4#include <kj/async.h>
5#include <kj/timer.h>
6
7namespace vanetza
8{
9namespace rpc
10{
11
12class AsioEventPort : public kj::EventPort
13{
14public:
15 AsioEventPort(boost::asio::io_context& io);
16
17 bool wait() override;
18 bool poll() override;
19 void setRunnable(bool runnable) override;
20
21 void setLoop(kj::EventLoop* loop)
22 {
23 loop_ = loop;
24 }
25
26 kj::Timer& getTimer()
27 {
28 return timer_;
29 }
30
31private:
32 void advanceTime();
33 void armTimeout();
34
35 boost::asio::io_context& io_;
36 boost::asio::steady_timer steady_timer_;
37 kj::EventLoop* loop_ = nullptr;
38 const kj::MonotonicClock& clock_;
39 kj::TimerImpl timer_;
40};
41
42} // namespace rpc
43} // namespace vanetza