void FHttpNetworkReplayStreamer::HttpStartDownloadingFinished( FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded ) { check( HttpState == EHttptate::StartDownloading ); check( StreamerState == EStreamerState::NeedToDownloadHeader ); HttpState = EHttptate::Idle; if ( bSucceeded && HttpResponse->GetResponseCode() == EHttpResponseCodes::Ok ) { FString NumChunksString = HttpResponse->GetHeader( TEXT( "NumChunks" ) ); FString DemoTimeString = HttpResponse->GetHeader( TEXT( "Time" ) ); FString State = HttpResponse->GetHeader( TEXT( "State" ) ); ViewerName = HttpResponse->GetHeader( TEXT( "Viewer" ) ); bStreamIsLive = State == TEXT( "Live" ); NumDownloadChunks = FCString::Atoi( *NumChunksString ); DemoTimeInMS = FCString::Atoi( *DemoTimeString ); UE_LOG( LogHttpReplay, Log, TEXT( "FHttpNetworkReplayStreamer::HttpStartDownloadingFinished. Viewer: %s, State: %s, NumChunks: %i, DemoTime: %2.2f" ), *ViewerName, *State, NumDownloadChunks, (float)DemoTimeInMS / 1000 ); // First, download the header if ( NumDownloadChunks > 0 ) { StreamerState = EStreamerState::NeedToDownloadHeader; } else { UE_LOG( LogHttpReplay, Warning, TEXT( "FHttpNetworkReplayStreamer::HttpStartDownloadingFinished. NO CHUNKS" ) ); StartStreamingDelegate.ExecuteIfBound( false, StreamArchive.IsSaving() ); // Reset delegate StartStreamingDelegate = FOnStreamReadyDelegate(); SetLastError( ENetworkReplayError::ServiceUnavailable ); } } else { UE_LOG( LogHttpReplay, Error, TEXT( "FHttpNetworkReplayStreamer::HttpStartDownloadingFinished. FAILED" ) ); StartStreamingDelegate.ExecuteIfBound( false, StreamArchive.IsSaving() ); // Reset delegate StartStreamingDelegate = FOnStreamReadyDelegate(); SetLastError( ENetworkReplayError::ServiceUnavailable ); } }
int HttpRpcRequest::ParseRequestIdFromResponse(FHttpResponsePtr response) { FString requestIdString = response->GetHeader("X-Request-ID"); if (requestIdString == "") { return -1; } return FCString::Atoi(*requestIdString); }
void FHttpNetworkReplayStreamer::HttpDownloadFinished( FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded ) { check( HttpState == EHttptate::DownloadingStream ); check( StreamArchive.IsLoading() ); HttpState = EHttptate::Idle; if ( bSucceeded && HttpResponse->GetResponseCode() == EHttpResponseCodes::Ok ) { FString NumChunksString = HttpResponse->GetHeader( TEXT( "NumChunks" ) ); FString DemoTimeString = HttpResponse->GetHeader( TEXT( "Time" ) ); FString State = HttpResponse->GetHeader( TEXT( "State" ) ); bStreamIsLive = State == TEXT( "Live" ); NumDownloadChunks = FCString::Atoi( *NumChunksString ); DemoTimeInMS = FCString::Atoi( *DemoTimeString ); if ( HttpResponse->GetContent().Num() > 0 || bStreamIsLive ) { if ( HttpResponse->GetContent().Num() > 0 ) { StreamArchive.Buffer.Append( HttpResponse->GetContent() ); StreamFileCount++; } UE_LOG( LogHttpReplay, Verbose, TEXT( "FHttpNetworkReplayStreamer::HttpDownloadFinished. State: %s, Progress: %i / %i, DemoTime: %2.2f" ), *State, StreamFileCount, NumDownloadChunks, (float)DemoTimeInMS / 1000 ); } else { UE_LOG( LogHttpReplay, Error, TEXT( "FHttpNetworkReplayStreamer::HttpDownloadFinished. FAILED." ) ); StreamArchive.Buffer.Empty(); SetLastError( ENetworkReplayError::ServiceUnavailable ); } } else { UE_LOG( LogHttpReplay, Error, TEXT( "FHttpNetworkReplayStreamer::HttpDownloadFinished. FAILED." ) ); StreamArchive.Buffer.Empty(); SetLastError( ENetworkReplayError::ServiceUnavailable ); } }
void UBPDownloader::HandleHeaderReceived(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded) { if (bSucceeded && HttpResponse.IsValid()) { FString FileLength = HttpResponse->GetHeader(L"Content-Length");// (); FileTotalBytes = (float)UKismetStringLibrary::Conv_StringToInt(FileLength); //Start Downloading StartDownload(); } else { RemoveFromRoot(); OnFail.Broadcast(0.f);//FilePath } }
void FHttpNetworkReplayStreamer::HttpStartUploadingFinished( FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded ) { check( HttpState == EHttptate::StartUploading ); check( StreamerState == EStreamerState::NeedToUploadHeader ); HttpState = EHttptate::Idle; if ( bSucceeded && HttpResponse->GetResponseCode() == EHttpResponseCodes::Ok ) { SessionName = HttpResponse->GetHeader( TEXT( "Session" ) ); UE_LOG( LogHttpReplay, Log, TEXT( "FHttpNetworkReplayStreamer::HttpStartUploadingFinished. SessionName: %s" ), *SessionName ); } else { UE_LOG( LogHttpReplay, Error, TEXT( "FHttpNetworkReplayStreamer::HttpStartUploadingFinished. FAILED" ) ); SetLastError( ENetworkReplayError::ServiceUnavailable ); } }