mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-12 22:41:49 +00:00
cleanup request
This commit is contained in:
parent
58c974a3a1
commit
432687c6ab
3 changed files with 22 additions and 49 deletions
|
|
@ -125,16 +125,6 @@ static int l_request(lua::State* L, network::Network& network) {
|
||||||
std::move(response.body)}
|
std::move(response.body)}
|
||||||
));
|
));
|
||||||
};
|
};
|
||||||
request.onReject = [currentRequestId](network::HttpResponse response) {
|
|
||||||
push_event(NetworkEvent(
|
|
||||||
RESPONSE,
|
|
||||||
ResponseEventDto {
|
|
||||||
response.status,
|
|
||||||
false,
|
|
||||||
currentRequestId,
|
|
||||||
std::move(response.body)}
|
|
||||||
));
|
|
||||||
};
|
|
||||||
|
|
||||||
network.request(std::move(request));
|
network.request(std::move(request));
|
||||||
return lua::pushinteger(L, currentRequestId);
|
return lua::pushinteger(L, currentRequestId);
|
||||||
|
|
|
||||||
|
|
@ -120,9 +120,10 @@ public:
|
||||||
if (res != CURLM_OK) {
|
if (res != CURLM_OK) {
|
||||||
auto message = curl_multi_strerror(res);
|
auto message = curl_multi_strerror(res);
|
||||||
logger.error() << message << " (" << request.url << ")";
|
logger.error() << message << " (" << request.url << ")";
|
||||||
if (request.onReject) {
|
if (request.onResponse) {
|
||||||
request.onReject({HTTP_BAD_GATEWAY, {}, {}});
|
request.onResponse({0, {}, {}});
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
entry->request = std::move(request);
|
entry->request = std::move(request);
|
||||||
requests.push_back(std::move(entry));
|
requests.push_back(std::move(entry));
|
||||||
|
|
@ -146,46 +147,25 @@ public:
|
||||||
requests.begin(),
|
requests.begin(),
|
||||||
requests.end(),
|
requests.end(),
|
||||||
[curl](const std::unique_ptr<ProcessingRequest>& entry) {
|
[curl](const std::unique_ptr<ProcessingRequest>& entry) {
|
||||||
return entry->curl == curl;
|
return entry && entry->curl == curl;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
if (found == requests.end()) {
|
if (requests.empty() || found == requests.end()) {
|
||||||
logger.error() << "could not find request for cURL handle";
|
logger.error() << "could not find request for cURL handle";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto entry = std::move(*found);
|
auto entry = std::move(*found);
|
||||||
auto& req = entry->request;
|
|
||||||
|
|
||||||
requests.erase(found);
|
requests.erase(found);
|
||||||
|
|
||||||
if (msg->msg == CURLMSG_DONE) {
|
|
||||||
curl_multi_remove_handle(multiHandle, curl);
|
|
||||||
}
|
|
||||||
int response = -1;
|
int response = -1;
|
||||||
CURLcode result = msg->data.result;
|
CURLcode result = msg->data.result;
|
||||||
curl_easy_getinfo(msg->easy_handle, CURLINFO_RESPONSE_CODE, &response);
|
curl_easy_getinfo(msg->easy_handle, CURLINFO_RESPONSE_CODE, &response);
|
||||||
auto headers = std::move(entry->headers);
|
auto headers = std::move(entry->headers);
|
||||||
if (response == HTTP_OK) {
|
if (response == 0) {
|
||||||
long size;
|
|
||||||
if (!curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &size)) {
|
|
||||||
totalUpload += size;
|
|
||||||
}
|
|
||||||
if (!curl_easy_getinfo(curl, CURLINFO_HEADER_SIZE, &size)) {
|
|
||||||
totalDownload += size;
|
|
||||||
}
|
|
||||||
totalDownload += entry->buffer.size();
|
|
||||||
if (req.onResponse) {
|
|
||||||
req.onResponse({
|
|
||||||
response,
|
|
||||||
std::move(headers),
|
|
||||||
std::move(entry->buffer),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else if (response == 0) {
|
|
||||||
auto message = std::string(curl_easy_strerror(result));
|
auto message = std::string(curl_easy_strerror(result));
|
||||||
logger.error() << message << " (" << req.url << ")";
|
logger.error() << message << " (" << entry->request.url << ")";
|
||||||
if (req.onReject) {
|
if (entry->request.onResponse) {
|
||||||
req.onReject(
|
entry->request.onResponse(
|
||||||
{response,
|
{response,
|
||||||
std::move(headers),
|
std::move(headers),
|
||||||
std::vector<char>(
|
std::vector<char>(
|
||||||
|
|
@ -194,15 +174,20 @@ public:
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.error() << "response code " << response << " (" << req.url
|
long size;
|
||||||
<< ")"
|
if (!curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &size)) {
|
||||||
<< (entry->buffer.empty()
|
totalUpload += size;
|
||||||
? ""
|
}
|
||||||
: std::to_string(entry->buffer.size()) +
|
if (!curl_easy_getinfo(curl, CURLINFO_HEADER_SIZE, &size)) {
|
||||||
" byte(s)");
|
totalDownload += size;
|
||||||
|
}
|
||||||
totalDownload += entry->buffer.size();
|
totalDownload += entry->buffer.size();
|
||||||
if (req.onReject) {
|
if (entry->request.onResponse) {
|
||||||
req.onReject({response, {}, std::move(entry->buffer)});
|
entry->request.onResponse({
|
||||||
|
response,
|
||||||
|
std::move(headers),
|
||||||
|
std::move(entry->buffer),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ namespace network {
|
||||||
struct HttpResponse;
|
struct HttpResponse;
|
||||||
|
|
||||||
using OnResponse = std::function<void(HttpResponse)>;
|
using OnResponse = std::function<void(HttpResponse)>;
|
||||||
using OnReject = std::function<void(HttpResponse)>;
|
|
||||||
using ConnectCallback = std::function<void(u64id_t, u64id_t)>;
|
using ConnectCallback = std::function<void(u64id_t, u64id_t)>;
|
||||||
using ConnectErrorCallback = std::function<void(u64id_t, std::string)>;
|
using ConnectErrorCallback = std::function<void(u64id_t, std::string)>;
|
||||||
using ServerDatagramCallback = std::function<void(u64id_t sid, const std::string& addr, int port, const char* buffer, size_t length)>;
|
using ServerDatagramCallback = std::function<void(u64id_t sid, const std::string& addr, int port, const char* buffer, size_t length)>;
|
||||||
|
|
@ -26,7 +25,6 @@ namespace network {
|
||||||
std::vector<std::string> headers;
|
std::vector<std::string> headers;
|
||||||
|
|
||||||
OnResponse onResponse;
|
OnResponse onResponse;
|
||||||
OnReject onReject;
|
|
||||||
bool followLocation = false;
|
bool followLocation = false;
|
||||||
bool verifySSL = true;
|
bool verifySSL = true;
|
||||||
long maxSize = -1;
|
long maxSize = -1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue