void FTestCloudInterface::Test() { IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get(FName(*Subsystem)); check(OnlineSub); if (OnlineSub->GetIdentityInterface().IsValid()) { UserId = OnlineSub->GetIdentityInterface()->GetUniquePlayerId(0); } if (UserId.IsValid()) { // Cache interfaces UserCloud = OnlineSub->GetUserCloudInterface(); if (UserCloud.IsValid()) { // Setup delegates EnumerationDelegate = FOnEnumerateUserFilesCompleteDelegate::CreateRaw(this, &FTestCloudInterface::OnEnumerateUserFilesComplete); OnWriteUserCloudFileCompleteDelegate = FOnWriteUserFileCompleteDelegate::CreateRaw(this, &FTestCloudInterface::OnWriteUserCloudFileComplete); OnReadEnumeratedUserFilesCompleteDelegate = FOnReadUserFileCompleteDelegate::CreateRaw(this, &FTestCloudInterface::OnReadEnumeratedUserFilesComplete); OnDeleteEnumeratedUserFilesCompleteDelegate = FOnDeleteUserFileCompleteDelegate::CreateRaw(this, &FTestCloudInterface::OnDeleteEnumeratedUserFilesComplete); SharedCloud = OnlineSub->GetSharedCloudInterface(); if (SharedCloud.IsValid()) { OnWriteSharedCloudFileCompleteDelegate = FOnWriteSharedFileCompleteDelegate::CreateRaw(this, &FTestCloudInterface::OnWriteSharedCloudFileComplete); OnReadEnumerateSharedFileCompleteDelegate = FOnReadSharedFileCompleteDelegate::CreateRaw(this, &FTestCloudInterface::OnReadEnumeratedSharedFileCompleteDelegate); // Pre-generated content SharedCloud->GetDummySharedHandlesForTest(RandomSharedFileHandles); } } else { UE_LOG(LogOnline, Warning, TEXT("Cloud test failed. Cloud API not supported.")); delete this; } } else { UE_LOG(LogOnline, Warning, TEXT("Cloud test failed. No logged in user.")); delete this; } }
static void DeleteFromEnumerateUserFilesComplete(bool bWasSuccessful, const FUniqueNetId& UserId) { IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get(); check(OnlineSub); IOnlineUserCloudPtr UserCloud = OnlineSub->GetUserCloudInterface(); UserCloud->ClearOnEnumerateUserFilesCompleteDelegate_Handle(GOnEnumerateUserFilesCompleteDelegateHandle); GPerCloudDeleteFromEnumerateUserFilesCompleteDelegateHandles.Remove(UserCloud.Get()); if (bWasSuccessful) { TArray<FCloudFileHeader> UserFiles; UserCloud->GetUserFileList(UserId, UserFiles); for (int32 Idx=0; Idx < UserFiles.Num(); Idx++) { UserCloud->DeleteUserFile(UserId, UserFiles[Idx].FileName, true, true); } } }