Network/WebService: Make Pool return a boolean indicating if a request finished
This commit is contained in:
parent
0989a25a99
commit
ae62e1f6c9
|
|
@ -44,7 +44,7 @@ namespace Nz
|
||||||
|
|
||||||
inline const std::string& GetUserAgent() const;
|
inline const std::string& GetUserAgent() const;
|
||||||
|
|
||||||
void Poll();
|
bool Poll();
|
||||||
|
|
||||||
void QueueRequest(std::unique_ptr<WebRequest>&& request);
|
void QueueRequest(std::unique_ptr<WebRequest>&& request);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ namespace Nz
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebService::Poll()
|
bool WebService::Poll()
|
||||||
{
|
{
|
||||||
#ifndef NAZARA_PLATFORM_WEB
|
#ifndef NAZARA_PLATFORM_WEB
|
||||||
assert(m_curlMulti);
|
assert(m_curlMulti);
|
||||||
|
|
@ -55,9 +55,11 @@ namespace Nz
|
||||||
if (err != CURLM_OK)
|
if (err != CURLM_OK)
|
||||||
{
|
{
|
||||||
NazaraError(fmt::format("[WebService] curl_multi_perform failed with {0}: {1}", UnderlyingCast(err), m_curl.multi_strerror(err)));
|
NazaraError(fmt::format("[WebService] curl_multi_perform failed with {0}: {1}", UnderlyingCast(err), m_curl.multi_strerror(err)));
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool finishedRequest = false;
|
||||||
|
|
||||||
CURLMsg* m;
|
CURLMsg* m;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
|
@ -80,22 +82,27 @@ namespace Nz
|
||||||
m_curl.multi_remove_handle(m_curlMulti, handle);
|
m_curl.multi_remove_handle(m_curlMulti, handle);
|
||||||
|
|
||||||
m_activeRequests.erase(handle);
|
m_activeRequests.erase(handle);
|
||||||
|
|
||||||
|
finishedRequest = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (m);
|
while (m);
|
||||||
#else
|
|
||||||
if (!m_finishedRequests.empty())
|
|
||||||
{
|
|
||||||
for (auto&& [request, succeeded] : m_finishedRequests)
|
|
||||||
{
|
|
||||||
if (succeeded)
|
|
||||||
request->TriggerSuccessCallback();
|
|
||||||
else
|
|
||||||
request->TriggerErrorCallback(request->GetFetchHandle()->statusText);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_finishedRequests.clear();
|
return finishedRequest; //< returns true if at least one request finished
|
||||||
|
#else
|
||||||
|
if (m_finishedRequests.empty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (auto&& [request, succeeded] : m_finishedRequests)
|
||||||
|
{
|
||||||
|
if (succeeded)
|
||||||
|
request->TriggerSuccessCallback();
|
||||||
|
else
|
||||||
|
request->TriggerErrorCallback(request->GetFetchHandle()->statusText);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_finishedRequests.clear();
|
||||||
|
return true;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue