in Gems/AWSGameLift/Code/AWSGameLiftServer/Source/AWSGameLiftServerManager.cpp [310:368]
AZStd::vector<Aws::GameLift::Server::Model::PlayerSession> AWSGameLiftServerManager::GetActivePlayerSessions()
{
Aws::GameLift::Server::Model::DescribePlayerSessionsRequest describeRequest;
describeRequest.SetGameSessionId(m_gameSession.GetGameSessionId());
describeRequest.SetPlayerSessionStatusFilter(
Aws::GameLift::Server::Model::PlayerSessionStatusMapper::GetNameForPlayerSessionStatus(
Aws::GameLift::Server::Model::PlayerSessionStatus::ACTIVE));
int maxPlayerSession = m_gameSession.GetMaximumPlayerSessionCount();
AZStd::vector<Aws::GameLift::Server::Model::PlayerSession> activePlayerSessions;
if (maxPlayerSession <= AWSGameLiftDescribePlayerSessionsPageSize)
{
describeRequest.SetLimit(maxPlayerSession);
auto outcome = m_gameLiftServerSDKWrapper->DescribePlayerSessions(describeRequest);
if (outcome.IsSuccess())
{
for (auto playerSession : outcome.GetResult().GetPlayerSessions())
{
activePlayerSessions.push_back(playerSession);
}
}
else
{
AZ_Error(AWSGameLiftServerManagerName, false, AWSGameLiftDescribePlayerSessionsErrorMessage,
outcome.GetError().GetErrorMessage().c_str());
}
}
else
{
describeRequest.SetLimit(AWSGameLiftDescribePlayerSessionsPageSize);
while (true)
{
auto outcome = m_gameLiftServerSDKWrapper->DescribePlayerSessions(describeRequest);
if (outcome.IsSuccess())
{
for (auto playerSession : outcome.GetResult().GetPlayerSessions())
{
activePlayerSessions.push_back(playerSession);
}
if (outcome.GetResult().GetNextToken().empty())
{
break;
}
else
{
describeRequest.SetNextToken(outcome.GetResult().GetNextToken());
}
}
else
{
activePlayerSessions.clear();
AZ_Error(AWSGameLiftServerManagerName, false, AWSGameLiftDescribePlayerSessionsErrorMessage,
outcome.GetError().GetErrorMessage().c_str());
break;
}
}
}
return activePlayerSessions;
}