add client

This commit is contained in:
2025-08-08 13:24:50 +02:00
parent b09c7f9efd
commit ac3e949323
14 changed files with 306 additions and 33 deletions

View File

@@ -4,20 +4,43 @@ namespace td {
namespace server {
void FakeSocket::SendPeer(PeerID a_Peer, const protocol::PacketBase& a_Packet) {
OnSendToFakePeer(a_Peer, a_Packet);
auto socket = m_Clients.at(a_Peer);
assert(socket.has_value());
socket.value()->OnReceive(a_Packet);
}
void FakeSocket::ReceiveFromFakePeer(PeerID a_Peer, const protocol::PacketBase& a_Packet) {
OnReceivePeer(a_Peer, a_Packet);
}
void FakeSocket::ConnectFakePeer(PeerID a_Peer) {
OnConnectPeer(a_Peer);
PeerID FakeSocket::ConnectFakePeer(const std::shared_ptr<client::FakeSocket>& a_Socket) {
int peerId = GetNextFreeId();
if (peerId == -1) {
peerId = m_Clients.size();
m_Clients.push_back(a_Socket);
} else {
m_Clients.emplace(m_Clients.begin() + peerId, a_Socket);
}
a_Socket->OnConnect();
OnConnectPeer(peerId);
return peerId;
}
void FakeSocket::DisconnectFakePeer(PeerID a_Peer) {
auto socket = m_Clients.at(a_Peer);
assert(socket.has_value());
socket.value()->OnDisconnect();
OnDisconnectPeer(a_Peer);
}
int FakeSocket::GetNextFreeId() {
auto it = std::find_if(m_Clients.begin(), m_Clients.end(), [](const auto& a_Value) { return !a_Value.has_value(); });
if (it == m_Clients.end())
return -1;
return std::distance(m_Clients.begin(), it);
}
} // namespace server
} // namespace td