Ejemplo n.º 1
0
void FHttpRequestWinInet::Tick(float DeltaSeconds)
{
	// keep track of elapsed milliseconds
	const int32 ElapsedMillisecondsThisFrame = DeltaSeconds * 1000;
	FPlatformAtomics::InterlockedAdd(&ElapsedTimeSinceLastServerResponse, ElapsedMillisecondsThisFrame);

	// Update response progress
	if(Response.IsValid())
	{
		int32 ResponseBytes = Response->ProgressBytesRead.GetValue();
		if(ResponseBytes > ProgressBytesSent)
		{
			ProgressBytesSent = ResponseBytes;
			OnRequestProgress().ExecuteIfBound(SharedThis(this),ResponseBytes);
		}
	}

	// Convert to seconds for comparison to the timeout value
	const float TotalElapsedSeconds = ElapsedTimeSinceLastServerResponse / 1000.f;

	const float HttpTimeout = FHttpModule::Get().GetHttpTimeout();
	if (HttpTimeout > 0 && 
		TotalElapsedSeconds >= HttpTimeout)
	{
		UE_LOG(LogHttp, Warning, TEXT("Timeout processing Http request. %p url=%s"),
			this, *GetURL());

		// finish it off since it is timeout
		FinishedRequest();
	}
	// No longer waiting for a response and done processing it
	else if (CompletionStatus == EHttpRequestStatus::Processing &&
		Response.IsValid() &&
		Response->bIsReady)
	{
		FinishedRequest();
	}
}
Ejemplo n.º 2
0
void FHttpRetrySystem::FRequest::HttpOnRequestProgress(FHttpRequestPtr InHttpRequest, int32 BytesSent, int32 BytesRcv)
{
	OnRequestProgress().ExecuteIfBound(AsShared(), BytesSent, BytesRcv);
}