6#include <unordered_map>
7#include <unordered_set>
13using TimePoint = std::chrono::steady_clock::time_point;
42 uint64_t
add_timer(
int fd, std::chrono::milliseconds timeout);
63 std::priority_queue<TimerEvent, std::vector<TimerEvent>, std::greater<TimerEvent>> timers_;
64 std::unordered_set<uint64_t> cancelled_timers_;
65 uint64_t next_timer_id_{1};
Manages timers for connection timeouts.
Definition TimerManager.hpp:29
TimerManager()
Constructs a TimerManager.
void handle_expired_timers(std::function< void(int)> on_timeout)
Processes all expired timers.
Definition TimerManager.cpp:35
uint64_t add_timer(int fd, std::chrono::milliseconds timeout)
Adds a timer for a given file descriptor.
Definition TimerManager.cpp:7
int get_next_timeout()
Gets the time remaining until the next timeout.
Definition TimerManager.cpp:22
void cancel_timer(uint64_t timer_id)
Cancels a timer by ID.
Definition TimerManager.cpp:17
Definition Http2Session.hpp:17
std::chrono::steady_clock::time_point TimePoint
Definition TimerManager.hpp:13
Definition TimerManager.hpp:15
int fd
Definition TimerManager.hpp:18
uint64_t timer_id
Definition TimerManager.hpp:17
bool operator>(const TimerEvent &other) const
Definition TimerManager.hpp:21
TimePoint expiration
Definition TimerManager.hpp:16