Changeset View
Changeset View
Standalone View
Standalone View
source/network/NetServer.cpp
Show First 20 Lines • Show All 361 Lines • ▼ Show 20 Lines | bool CNetServerWorker::Broadcast(const CNetMessage* message, const std::vector<NetServerSessionState>& targetStates) | ||||
ENSURE(m_Host); | ENSURE(m_Host); | ||||
bool ok = true; | bool ok = true; | ||||
// TODO: this does lots of repeated message serialisation if we have lots | // TODO: this does lots of repeated message serialisation if we have lots | ||||
// of remote peers; could do it more efficiently if that's a real problem | // of remote peers; could do it more efficiently if that's a real problem | ||||
for (CNetServerSession* session : m_Sessions) | for (CNetServerSession* session : m_Sessions) | ||||
if (std::find(targetStates.begin(), targetStates.end(), session->GetCurrState()) != targetStates.end() && | if (std::find(targetStates.begin(), targetStates.end(), static_cast<NetServerSessionState>(session->GetCurrState())) != targetStates.end() && | ||||
wraitii: Feel like it would be better to make GetCurrState return the correct type right away... Might… | |||||
!session->SendMessage(message)) | !session->SendMessage(message)) | ||||
ok = false; | ok = false; | ||||
return ok; | return ok; | ||||
} | } | ||||
void CNetServerWorker::RunThread(CNetServerWorker* data) | void CNetServerWorker::RunThread(CNetServerWorker* data) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 709 Lines • ▼ Show 20 Lines | bool CNetServerWorker::OnAuthenticate(void* context, CFsmEvent* event) | ||||
} | } | ||||
// TODO: check server password etc? | // TODO: check server password etc? | ||||
u32 newHostID = server.m_NextHostID++; | u32 newHostID = server.m_NextHostID++; | ||||
session->SetUserName(username); | session->SetUserName(username); | ||||
session->SetHostID(newHostID); | session->SetHostID(newHostID); | ||||
session->SetLocalClient(message->m_IsLocalClient); | session->SetLocalClient(message->m_IsLocalClient); | ||||
Done Inline Actionssamesies here and below wraitii: samesies here and below | |||||
CAuthenticateResultMessage authenticateResult; | CAuthenticateResultMessage authenticateResult; | ||||
authenticateResult.m_Code = isRejoining ? ARC_OK_REJOINING : ARC_OK; | authenticateResult.m_Code = isRejoining ? ARC_OK_REJOINING : ARC_OK; | ||||
authenticateResult.m_HostID = newHostID; | authenticateResult.m_HostID = newHostID; | ||||
authenticateResult.m_Message = L"Logged in"; | authenticateResult.m_Message = L"Logged in"; | ||||
session->SendMessage(&authenticateResult); | session->SendMessage(&authenticateResult); | ||||
server.OnUserJoin(session); | server.OnUserJoin(session); | ||||
▲ Show 20 Lines • Show All 342 Lines • ▼ Show 20 Lines | bool CNetServerWorker::OnClientPaused(void* context, CFsmEvent* event) | ||||
{ | { | ||||
if (player == server.m_PausingPlayers.end()) | if (player == server.m_PausingPlayers.end()) | ||||
return true; | return true; | ||||
server.m_PausingPlayers.erase(player); | server.m_PausingPlayers.erase(player); | ||||
} | } | ||||
// Send messages to clients that are in game, and are not the client who paused. | // Send messages to clients that are in game, and are not the client who paused. | ||||
for (CNetServerSession* session : server.m_Sessions) | for (CNetServerSession* netSession : server.m_Sessions) | ||||
{ | if (netSession->GetCurrState() == NSS_INGAME && message->m_GUID != netSession->GetGUID()) | ||||
if (session->GetCurrState() == NSS_INGAME && message->m_GUID != session->GetGUID()) | netSession->SendMessage(message); | ||||
session->SendMessage(message); | |||||
} | |||||
return true; | return true; | ||||
} | } | ||||
bool CNetServerWorker::CheckGameLoadStatus(CNetServerSession* changedSession) | bool CNetServerWorker::CheckGameLoadStatus(CNetServerSession* changedSession) | ||||
{ | { | ||||
for (const CNetServerSession* session : m_Sessions) | for (const CNetServerSession* session : m_Sessions) | ||||
if (session != changedSession && session->GetCurrState() != NSS_INGAME) | if (session != changedSession && session->GetCurrState() != NSS_INGAME) | ||||
▲ Show 20 Lines • Show All 169 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator
Feel like it would be better to make GetCurrState return the correct type right away... Might be a bit out of scope though.
I think we can live with this warning staying on, will push people to refactor FSM