R-Type  2
Doom but in better
Loading...
Searching...
No Matches
client_manager.cpp
Go to the documentation of this file.
1#include "client_manager.hpp"
2
3uint32_t ClientManager::resolveClientID(const asio::ip::udp::endpoint& ep) {
4 std::lock_guard<std::mutex> lock(mutex_);
5 auto it = epToId_.find(ep);
6 if (it != epToId_.end()) {
7 return it->second;
8 } else {
9 uint32_t newId = nextId_++;
10 epToId_[ep] = newId;
11 idToEp_[newId] = ep;
12 return newId;
13 }
14}
15
16void ClientManager::removeClient(const asio::ip::udp::endpoint& ep) {
17 std::lock_guard<std::mutex> lock(mutex_);
18 auto it = epToId_.find(ep);
19 if (it != epToId_.end()) {
20 uint32_t cid = it->second;
21 epToId_.erase(it);
22 idToEp_.erase(cid);
23 }
24}
25
26asio::ip::udp::endpoint ClientManager::getEndpointForId(uint32_t clientId) {
27 std::lock_guard<std::mutex> lock(mutex_);
28 auto it = idToEp_.find(clientId);
29 if (it != idToEp_.end()) {
30 return it->second;
31 }
32 return asio::ip::udp::endpoint(); // invalid
33}
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)