Fixes for Async ApiClient

This commit is contained in:
lganzzzo 2019-03-26 04:45:15 +02:00
parent b1fcfc6641
commit c433ff4f3d
3 changed files with 5 additions and 2 deletions

View File

@ -164,6 +164,7 @@ oatpp::async::Action HttpRequestExecutor::executeAsync(oatpp::async::AbstractCor
std::shared_ptr<Body> m_body;
std::shared_ptr<const oatpp::web::protocol::http::incoming::BodyDecoder> m_bodyDecoder;
std::shared_ptr<ConnectionHandle> m_connectionHandle;
std::shared_ptr<oatpp::data::stream::OutputStreamBufferedProxy> m_upstream;
private:
std::shared_ptr<oatpp::data::stream::IOStream> m_connection;
std::shared_ptr<oatpp::data::buffer::IOBuffer> m_ioBuffer;
@ -207,10 +208,10 @@ oatpp::async::Action HttpRequestExecutor::executeAsync(oatpp::async::AbstractCor
request->putHeaderIfNotExists(Header::HOST, m_connectionProvider->getProperty("host"));
request->putHeaderIfNotExists(Header::CONNECTION, Header::Value::CONNECTION_KEEP_ALIVE);
m_ioBuffer = oatpp::data::buffer::IOBuffer::createShared();
auto upStream = oatpp::data::stream::OutputStreamBufferedProxy::createShared(connection, m_ioBuffer);
m_upstream = oatpp::data::stream::OutputStreamBufferedProxy::createShared(connection, m_ioBuffer);
m_bufferPointer = m_ioBuffer->getData();
m_bufferBytesLeftToRead = m_ioBuffer->getSize();
return request->sendAsync(this, upStream->flushAsync(this, yieldTo(&ExecutorCoroutine::readResponse)), upStream);
return request->sendAsync(this, m_upstream->flushAsync(this, yieldTo(&ExecutorCoroutine::readResponse)), m_upstream);
}
Action readResponse() {

View File

@ -135,6 +135,7 @@ RequestHeadersReader::Action RequestHeadersReader::readHeadersAsync(oatpp::async
auto res = m_connection->read(m_buffer, desiredToRead);
if(res > 0) {
m_bufferStream.write(m_buffer, res);
m_progress += res;
for(v_int32 i = 0; i < res; i ++) {
m_accumulator <<= 8;

View File

@ -135,6 +135,7 @@ ResponseHeadersReader::Action ResponseHeadersReader::readHeadersAsync(oatpp::asy
auto res = m_connection->read(m_buffer, desiredToRead);
if(res > 0) {
m_bufferStream.write(m_buffer, res);
m_progress += res;
for(v_int32 i = 0; i < res; i ++) {
m_accumulator <<= 8;