R-Type  2
Doom but in better
Loading...
Searching...
No Matches
client_manager.hpp
Go to the documentation of this file.
1#pragma once
2#include <asio.hpp>
3#include <unordered_map>
4#include <mutex>
5#include <cstdint>
6
12public:
13 uint32_t resolveClientID(const asio::ip::udp::endpoint& ep);
14 void removeClient(const asio::ip::udp::endpoint& ep);
15
20 asio::ip::udp::endpoint getEndpointForId(uint32_t clientId);
21
22private:
23 std::mutex mutex_;
24 std::unordered_map<asio::ip::udp::endpoint, uint32_t> epToId_;
25 std::unordered_map<uint32_t, asio::ip::udp::endpoint> idToEp_;
26 uint32_t nextId_ = 1;
27};
Tracks (ip::udp::endpoint)->clientId and allows lookup in reverse.
asio::ip::udp::endpoint getEndpointForId(uint32_t clientId)
Returns the endpoint for a given clientId if known, else a default-constructed endpoint.
uint32_t resolveClientID(const asio::ip::udp::endpoint &ep)
void removeClient(const asio::ip::udp::endpoint &ep)