server state test
This commit is contained in:
@@ -4,21 +4,26 @@
|
||||
namespace td {
|
||||
namespace server {
|
||||
|
||||
IServerState::IServerState(IServerSocket& a_Socket) : m_Socket(a_Socket) {
|
||||
// TODO: don't do it like this
|
||||
m_Socket.OnConnect.Connect([this](PlayerID a_Player){
|
||||
OnPlayerJoin(a_Player);
|
||||
});
|
||||
m_Socket.OnDisconnect.Connect([this](PlayerID a_Player){
|
||||
OnPlayerLeave(a_Player);
|
||||
});
|
||||
m_Socket.OnReceive.Connect([this](PlayerID a_Player, const protocol::PacketBase& a_Packet){
|
||||
HandlePacket(a_Player, a_Packet);
|
||||
});
|
||||
void IServerState::SetServer(Server* a_Server) {
|
||||
assert(a_Server);
|
||||
m_Server = a_Server;
|
||||
m_Server->m_Socket->OnConnect.Connect(std::bind(&IServerState::OnPlayerJoin, this, std::placeholders::_1));
|
||||
m_Server->m_Socket->OnDisconnect.Connect(std::bind(&IServerState::OnPlayerLeave, this, std::placeholders::_1));
|
||||
m_Server->m_Socket->OnReceive.Connect(std::bind(&IServerState::HandlePacket, this, std::placeholders::_1, std::placeholders::_2));
|
||||
}
|
||||
|
||||
IServerState::IServerState() : m_Server(nullptr) {}
|
||||
|
||||
IServerState::~IServerState() {
|
||||
if (!m_Server)
|
||||
return;
|
||||
m_Server->m_Socket->OnConnect.Disconnect(std::bind(&IServerState::OnPlayerJoin, this, std::placeholders::_1));
|
||||
m_Server->m_Socket->OnDisconnect.Disconnect(std::bind(&IServerState::OnPlayerLeave, this, std::placeholders::_1));
|
||||
m_Server->m_Socket->OnReceive.Disconnect(std::bind(&IServerState::HandlePacket, this, std::placeholders::_1, std::placeholders::_2));
|
||||
}
|
||||
|
||||
void IServerState::SendPacket(PlayerID a_Id, const protocol::PacketBase& a_Packet) {
|
||||
m_Socket.Send(a_Id, a_Packet);
|
||||
m_Server->m_Socket->Send(a_Id, a_Packet);
|
||||
}
|
||||
|
||||
void IServerState::SetNewState(const std::shared_ptr<IServerState>& a_NewState) {
|
||||
|
||||
Reference in New Issue
Block a user