void UOnlineSessionClient::EndOnlineSession(FName SessionName) { IOnlineSessionPtr SessionInterface = Online::GetSessionInterface(GetWorld()); if (SessionInterface.IsValid()) { FNamedOnlineSession* Session = SessionInterface->GetNamedSession(SessionName); if (Session && Session->SessionState == EOnlineSessionState::InProgress) { EndSessionCompleteHandle = SessionInterface->AddOnEndSessionCompleteDelegate_Handle(FOnStartSessionCompleteDelegate::CreateUObject(this, &UOnlineSessionClient::OnEndSessionComplete)); SessionInterface->EndSession(SessionName); } } }
FDelegateHandle UOnlineSessionClient::EndExistingSession_Impl(FName SessionName, FOnEndSessionCompleteDelegate& Delegate) { FDelegateHandle Result; IOnlineSessionPtr SessionInt = GetSessionInt(); if (SessionInt.IsValid()) { Result = SessionInt->AddOnEndSessionCompleteDelegate_Handle(Delegate); SessionInt->EndSession(SessionName); } else { Delegate.ExecuteIfBound(SessionName, true); } return Result; }