#pragma once #include #include #include namespace td { namespace server { class IServerSocket { public: utils::Signal OnConnect; utils::Signal OnDisconnect; utils::Signal OnReceive; void Send(PlayerID a_PlayerId, const protocol::PacketBase& a_Packet); 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