Files
Tower-Defense2/include/server/IServerSocket.h
2025-08-15 11:25:35 +02:00

36 lines
898 B
C++

#pragma once
#include <server/PlayerIds.h>
#include <td/misc/Signal.h>
#include <td/protocol/packet/Packets.h>
namespace td {
namespace server {
class IServerSocket {
public:
utils::Signal<PlayerID, const protocol::PlayerInfo&> OnPlayerJoin;
utils::Signal<PlayerID> OnPlayerLeave;
utils::Signal<PlayerID, const protocol::PacketBase&> OnReceive;
void Send(PlayerID a_PlayerId, const protocol::PacketBase& a_Packet);
void Broadcast(const protocol::PacketBase& a_Packet);
void Disconnect(PlayerID a_PlayerId);
IServerSocket() {}
virtual ~IServerSocket() {}
private:
PlayerIds m_Ids;
protected:
void OnConnectPeer(PeerID a_PeerId);
void OnDisconnectPeer(PeerID a_PeerId);
void OnReceivePeer(PeerID a_PeerId, const protocol::PacketBase& a_Packet);
virtual void SendPeer(PeerID a_PeerId, const protocol::PacketBase& a_Packet) = 0;
};
} // namespace server
} // namespace td