in GameLiftPlugin/Source/GameLiftServer/Source/GameLiftServerSDK/Private/GameLiftServerSDK.cpp [182:244]
FGameLiftDescribePlayerSessionsOutcome FGameLiftServerSDKModule::DescribePlayerSessions(const FGameLiftDescribePlayerSessionsRequest &describePlayerSessionsRequest)
{
#if WITH_GAMELIFT
Aws::GameLift::Server::Model::DescribePlayerSessionsRequest request;
request.SetGameSessionId(TCHAR_TO_UTF8(*describePlayerSessionsRequest.m_gameSessionId));
request.SetPlayerId(TCHAR_TO_UTF8(*describePlayerSessionsRequest.m_playerId));
request.SetPlayerSessionId(TCHAR_TO_UTF8(*describePlayerSessionsRequest.m_playerSessionId));
request.SetPlayerSessionStatusFilter(TCHAR_TO_UTF8(*describePlayerSessionsRequest.m_playerSessionStatusFilter));
request.SetLimit(describePlayerSessionsRequest.m_limit);
request.SetNextToken(TCHAR_TO_UTF8(*describePlayerSessionsRequest.m_nextToken));
auto outcome = Aws::GameLift::Server::DescribePlayerSessions(request);
if (outcome.IsSuccess()) {
auto& outres = outcome.GetResult();
FGameLiftDescribePlayerSessionsResult result;
int sessionCount = 0;
auto sessions = outres.GetPlayerSessions(sessionCount);
if (sessionCount > 0) {
TArray<FGameLiftPlayerSession> outSessions;
outSessions.Reserve(sessionCount);
for (int i = 0; i < sessionCount; ++i) {
auto session = sessions + i;
FGameLiftPlayerSession& outSession = outSessions.AddDefaulted_GetRef();
outSession.m_playerSessionId = UTF8_TO_TCHAR(session->GetPlayerSessionId());
outSession.m_playerId = UTF8_TO_TCHAR(session->GetPlayerId());
outSession.m_gameSessionId = UTF8_TO_TCHAR(session->GetGameSessionId());
outSession.m_fleetId = UTF8_TO_TCHAR(session->GetFleetId());
outSession.m_creationTime = session->GetCreationTime();
outSession.m_terminationTime = session->GetTerminationTime();
switch (session->GetStatus()) {
case Aws::GameLift::Server::Model::PlayerSessionStatus::NOT_SET: outSession.m_status = EPlayerSessionStatus::NOT_SET; break;
case Aws::GameLift::Server::Model::PlayerSessionStatus::RESERVED: outSession.m_status = EPlayerSessionStatus::RESERVED; break;
case Aws::GameLift::Server::Model::PlayerSessionStatus::ACTIVE: outSession.m_status = EPlayerSessionStatus::ACTIVE; break;
case Aws::GameLift::Server::Model::PlayerSessionStatus::COMPLETED: outSession.m_status = EPlayerSessionStatus::COMPLETED; break;
case Aws::GameLift::Server::Model::PlayerSessionStatus::TIMEDOUT: outSession.m_status = EPlayerSessionStatus::TIMEDOUT; break;
}
outSession.m_ipAddress = UTF8_TO_TCHAR(session->GetIpAddress());
outSession.m_port = session->GetPort();
outSession.m_playerData = UTF8_TO_TCHAR(session->GetPlayerData());
outSession.m_dnsName = UTF8_TO_TCHAR(session->GetDnsName());
}
result.m_playerSessions = outSessions;
}
result.m_nextToken = (UTF8_TO_TCHAR(outres.GetNextToken()));
return FGameLiftDescribePlayerSessionsOutcome(result);
}
else {
return FGameLiftDescribePlayerSessionsOutcome(FGameLiftError(outcome.GetError()));
}
#else
return FGameLiftDescribePlayerSessionsOutcome(FGameLiftDescribePlayerSessionsResult());
#endif
}