forked from loafle/openapi-generator-original
[cpp-ue4] Improved retry system to use Unreal's FHttpRetrySystem (#9382)
* Revert "[cpp-ue4] Added the possibility to retry requests easily with AsyncRetry method on the response and SetAutoRetryCount on the request" * [cpp-ue4] Improved retry system to use Unreal's FHttpRetrySystem * [cpp-ue4] Updated style guide link * update samples Co-authored-by: William Cheng <wing328hk@gmail.com>
This commit is contained in:
@@ -12,11 +12,28 @@
|
||||
|
||||
#include "OpenAPIBaseModel.h"
|
||||
|
||||
#include "Async/Async.h"
|
||||
|
||||
namespace OpenAPI
|
||||
{
|
||||
|
||||
bool HttpRetryManager::Tick(float DeltaTime)
|
||||
{
|
||||
FManager::Update();
|
||||
return true;
|
||||
}
|
||||
|
||||
HttpRetryParams::HttpRetryParams(const FRetryLimitCountSetting& InRetryLimitCountOverride /*= FRetryLimitCountSetting()*/,
|
||||
const FRetryTimeoutRelativeSecondsSetting& InRetryTimeoutRelativeSecondsOverride /*= FRetryTimeoutRelativeSecondsSetting()*/,
|
||||
const FRetryResponseCodes& InRetryResponseCodes /*= FRetryResponseCodes()*/,
|
||||
const FRetryVerbs& InRetryVerbs /*= FRetryVerbs()*/,
|
||||
const FRetryDomainsPtr& InRetryDomains /*= FRetryDomainsPtr() */)
|
||||
: RetryLimitCountOverride(InRetryLimitCountOverride)
|
||||
, RetryTimeoutRelativeSecondsOverride(InRetryTimeoutRelativeSecondsOverride)
|
||||
, RetryResponseCodes(InRetryResponseCodes)
|
||||
, RetryVerbs(InRetryVerbs)
|
||||
, RetryDomains(InRetryDomains)
|
||||
{
|
||||
}
|
||||
|
||||
void Response::SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode)
|
||||
{
|
||||
ResponseCode = InHttpResponseCode;
|
||||
@@ -27,13 +44,4 @@ void Response::SetHttpResponseCode(EHttpResponseCodes::Type InHttpResponseCode)
|
||||
}
|
||||
}
|
||||
|
||||
void Response::AsyncRetry() const
|
||||
{
|
||||
// Unfortunately, it is currently usafe to call ProcessRequest() directly here.
|
||||
// This is because the HttpManager will remove all references to this HttpRequest in FHttpManager::Tick including the new request we just added, instead of removing just one.
|
||||
// This will lead to the request's destruction and eventually a crash.
|
||||
// The only solution is therefore to ensure we are taking an extra reference to the request, and that the request is added after the queue is flushed.
|
||||
Async(EAsyncExecution::TaskGraph, [AddRef = FHttpRequestPtr(GetHttpRequest())](){ AddRef->ProcessRequest(); });
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user