Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,8 @@ void FOnlineAsyncTaskAccelByteSimultaneousLogin::Initialize()
return;
}

if (Subsystem->IsMultipleLocalUsersEnabled())
{
SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LoginUserNum)));
}
else
{
SetApiClient(FMultiRegistry::GetApiClient());
}
InitApiClient();

API_CLIENT_CHECK_GUARD(ErrorStr);
ApiClient->CredentialsRef->SetClientCredentials(FRegistry::Settings.ClientId, FRegistry::Settings.ClientSecret);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,15 +139,8 @@ void FOnlineAsyncTaskAccelByteLoginQueue::ClaimAccessToken(const FString& InTick
{
AB_OSS_ASYNC_TASK_TRACE_BEGIN(TEXT("LocalUserNum: %d, TicketId: %s"), LoginUserNum, *InTicketId);

if (Subsystem->IsMultipleLocalUsersEnabled())
{
SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LoginUserNum)));
}
else
{
SetApiClient(FMultiRegistry::GetApiClient());
}

InitApiClientForLogin(LoginUserNum);

if(!IsApiClientValid())
{
AB_OSS_ASYNC_TASK_TRACE_END(TEXT("Unable to claim access token, ApiClient is invalid"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,8 @@ void FOnlineAsyncTaskAccelByteLoginQueueCancelTicket::Initialize()

Super::Initialize();

if (Subsystem->IsMultipleLocalUsersEnabled())
{
SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LoginUserNum)));
}
else
{
SetApiClient(FMultiRegistry::GetApiClient());
}

InitApiClientForLogin(LoginUserNum);

API_CLIENT_CHECK_GUARD(ErrorStr);

OnCancelTicketSuccessHandler = TDelegateUtils<FVoidHandler>::CreateThreadSafeSelfPtr(this, &FOnlineAsyncTaskAccelByteLoginQueueCancelTicket::OnCancelTicketSuccess);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,7 @@ void FOnlineAsyncTaskAccelByteLoginRefreshTicket::Initialize()
Super::Initialize();

AB_OSS_ASYNC_TASK_TRACE_BEGIN(TEXT("LoginUserNum: %d"), LoginUserNum);
if (Subsystem->IsMultipleLocalUsersEnabled())
{
SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LoginUserNum)));
}
else
{
SetApiClient(FMultiRegistry::GetApiClient());
}
InitApiClientForLogin(LoginUserNum);

OnRefreshTicketSuccessHandler = TDelegateUtils<THandler<FAccelByteModelsLoginQueueTicketInfo>>::CreateThreadSafeSelfPtr(this, &FOnlineAsyncTaskAccelByteLoginRefreshTicket::OnRefreshTicketSuccess);
OnRefreshTicketErrorHandler = TDelegateUtils<FErrorHandler>::CreateThreadSafeSelfPtr(this, &FOnlineAsyncTaskAccelByteLoginRefreshTicket::OnRefreshTicketError);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "AsyncTasks/OnlineAsyncTaskAccelByte.h"
#include "AsyncTasks/OnlineAsyncEpicTaskAccelByte.h"
#include "Core/AccelByteMultiRegistry.h"

void FOnlineAsyncTaskAccelByte::ExecuteCriticalSectionAction(FVoidHandler Action)
{
Expand Down Expand Up @@ -58,3 +59,15 @@ void FOnlineAsyncTaskAccelByte::ForcefullySetTimeoutState()
DeltaTickAccumulation += TaskTimeoutInSeconds;
LastTaskUpdateInSeconds -= TaskTimeoutInSeconds;
}

void FOnlineAsyncTaskAccelByte::InitApiClientForLogin(int LoginUserNum)
{
if (Subsystem->IsMultipleLocalUsersEnabled())
{
SetApiClient(AccelByte::FMultiRegistry::GetApiClient(FString::Printf(TEXT("%s/%d"), *Subsystem->GetInstanceName().ToString(), LoginUserNum)));
}
else
{
SetApiClient(AccelByte::FMultiRegistry::GetApiClient());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -84,14 +84,7 @@ void FOnlineAsyncTaskAccelByteLogin::Initialize()

GConfig->GetInt(TEXT("OnlineSubsystemAccelByte"), TEXT("LoginQueuePresentationThreshold"), LoginQueuePresentationThreshold, GEngineIni);

if (Subsystem->IsMultipleLocalUsersEnabled())
{
SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LoginUserNum)));
}
else
{
SetApiClient(FMultiRegistry::GetApiClient());
}
InitApiClient();

API_CLIENT_CHECK_GUARD();
//Valid because just recently SetApiClient()
Expand Down Expand Up @@ -217,6 +210,11 @@ void FOnlineAsyncTaskAccelByteLogin::TriggerDelegates()
AB_OSS_ASYNC_TASK_TRACE_END(TEXT(""));
}

void FOnlineAsyncTaskAccelByteLogin::InitApiClient()
{
InitApiClientForLogin(LoginUserNum);
}

void FOnlineAsyncTaskAccelByteLogin::LoginWithNativeSubsystem()
{
#if WITH_EDITOR
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,12 @@ class ONLINESUBSYSTEMACCELBYTE_API FOnlineAsyncTaskAccelByteLogin

#endif

/**
* Initializes the ApiClient for this login, using ContextName/LocalUserNum as the key if multiple users are enabled,
* or using the global default ApiClient if not
*/
void InitApiClient();

/**
* Attempts to fire off a login request with a native subsystem, if one is set up and usable.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ void FOnlineAsyncTaskAccelByteValidateUserInput::Initialize()
// Ensure to always get api client since the endpoint is able to call without authorization
if (Subsystem->GetApiClient(LocalUserNum) == nullptr)
{
SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LocalUserNum)));
SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%s/%d"), *Subsystem->GetInstanceName().ToString(), LocalUserNum)));
}
API_CLIENT_CHECK_GUARD(OnlineError)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,14 @@ class FOnlineAsyncTaskAccelByte : public FOnlineAsyncTaskBasic<FOnlineSubsystemA
return ApiClientInternal;
}

/**
* Initializes the ApiClient for this login, using ContextName/LocalUserNum as the key if multiple users are enabled,
* or using the global default ApiClient if not
*
* @param LoginUserNum The local user num being used to temporarily identify an API client
*/
void InitApiClientForLogin(int LoginUserNum);

/**
* Sets current API client member (expected to be used by Login async tasks)
*/
Expand Down