Allow for custom http buffer size

This commit is contained in:
Thomas Edvalson
2016-05-30 21:35:17 -04:00
parent dbb9b597c8
commit f44db4f01c
3 changed files with 10 additions and 7 deletions
+1 -1
View File
@@ -415,7 +415,7 @@ public:
/// \return Server's response
///
////////////////////////////////////////////////////////////
Response sendRequest(const Request& request, Time timeout = Time::Zero, RequestCallback callback = nullptr);
Response sendRequest(const Request& request, Time timeout = Time::Zero, RequestCallback callback = nullptr, size_t bufferSize = 4096);
private:
+4 -3
View File
@@ -249,7 +249,7 @@ void Http::setHost(const std::string& host, unsigned short port)
////////////////////////////////////////////////////////////
Http::Response Http::sendRequest(const Http::Request& request, Time timeout, RequestCallback callback)
Http::Response Http::sendRequest(const Http::Request& request, Time timeout, RequestCallback callback, size_t bufferSize)
{
if (m_context.httphandle)
{
@@ -314,7 +314,7 @@ Http::Response Http::sendRequest(const Http::Request& request, Time timeout, Req
u32 size = 0;
u32 lastProcessed = 0;
u32 processed = 0;
u8 buffer[4*1024];
u8 *buffer = new u8[bufferSize];
char *charBuf = reinterpret_cast<char*>(buffer);
@@ -323,7 +323,7 @@ Http::Response Http::sendRequest(const Http::Request& request, Time timeout, Req
while (dlret == HTTPC_RESULTCODE_DOWNLOADPENDING)
{
dlret = httpcReceiveData(&m_context, buffer, sizeof(buffer));
dlret = httpcReceiveData(&m_context, buffer, bufferSize);
if (R_FAILED(ret = httpcGetDownloadSizeState(&m_context, &processed, NULL)))
break;
@@ -343,6 +343,7 @@ Http::Response Http::sendRequest(const Http::Request& request, Time timeout, Req
}
}
delete[] buffer;
received.m_body = receivedStr;
return received;
}
+5 -3
View File
@@ -354,7 +354,7 @@ void Http::setHost(const std::string& host, unsigned short port)
////////////////////////////////////////////////////////////
Http::Response Http::sendRequest(const Http::Request& request, Time timeout, RequestCallback callback)
Http::Response Http::sendRequest(const Http::Request& request, Time timeout, RequestCallback callback, size_t bufferSize)
{
// First make sure that the request is valid -- add missing mandatory fields
Request toSend(request);
@@ -403,8 +403,8 @@ Http::Response Http::sendRequest(const Http::Request& request, Time timeout, Req
std::string receivedStr;
std::size_t size = 0;
std::size_t processed = 0;
char buffer[4*1024];
while (m_connection.receive(buffer, sizeof(buffer), size) == Socket::Done)
char *buffer = new char[bufferSize];
while (m_connection.receive(buffer, bufferSize, size) == Socket::Done)
{
if (callback)
{
@@ -433,6 +433,8 @@ Http::Response Http::sendRequest(const Http::Request& request, Time timeout, Req
receivedStr.append(buffer, buffer + size);
}
delete[] buffer;
// Build the Response object from the received data
if (!callback)
received.parse(receivedStr);