reduce some code duplication
This commit is contained in:
parent
f5b079b8e7
commit
47ab0cbf62
@ -63,8 +63,11 @@ void Connection::start()
|
||||
|
||||
void Connection::handle_read(const boost::system::error_code &e, std::size_t bytes_transferred)
|
||||
{
|
||||
if (!e)
|
||||
if (e)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// no error detected, let's parse the request
|
||||
CompressionType compression_type(noCompression);
|
||||
boost::tribool result;
|
||||
@ -88,6 +91,7 @@ void Connection::handle_read(const boost::system::error_code &e, std::size_t byt
|
||||
switch (compression_type)
|
||||
{
|
||||
case deflateRFC1951:
|
||||
//use deflate for compression
|
||||
compression_header.name = "Content-Encoding";
|
||||
compression_header.value = "deflate";
|
||||
reply.headers.insert(reply.headers.begin(), compression_header);
|
||||
@ -95,14 +99,9 @@ void Connection::handle_read(const boost::system::error_code &e, std::size_t byt
|
||||
reply.setSize(compressed_output.size());
|
||||
output_buffer = reply.HeaderstoBuffers();
|
||||
output_buffer.push_back(boost::asio::buffer(compressed_output));
|
||||
boost::asio::async_write(
|
||||
TCP_socket,
|
||||
output_buffer,
|
||||
strand.wrap(boost::bind(&Connection::handle_write,
|
||||
this->shared_from_this(),
|
||||
boost::asio::placeholders::error)));
|
||||
break;
|
||||
case gzipRFC1952:
|
||||
//use gzip for compression
|
||||
compression_header.name = "Content-Encoding";
|
||||
compression_header.value = "gzip";
|
||||
reply.headers.insert(reply.headers.begin(), compression_header);
|
||||
@ -110,24 +109,19 @@ void Connection::handle_read(const boost::system::error_code &e, std::size_t byt
|
||||
reply.setSize(compressed_output.size());
|
||||
output_buffer = reply.HeaderstoBuffers();
|
||||
output_buffer.push_back(boost::asio::buffer(compressed_output));
|
||||
boost::asio::async_write(
|
||||
TCP_socket,
|
||||
output_buffer,
|
||||
strand.wrap(boost::bind(&Connection::handle_write,
|
||||
this->shared_from_this(),
|
||||
boost::asio::placeholders::error)));
|
||||
break;
|
||||
case noCompression:
|
||||
//don't use any compression
|
||||
reply.SetUncompressedSize();
|
||||
output_buffer = reply.toBuffers();
|
||||
break;
|
||||
}
|
||||
boost::asio::async_write(
|
||||
TCP_socket,
|
||||
output_buffer,
|
||||
strand.wrap(boost::bind(&Connection::handle_write,
|
||||
this->shared_from_this(),
|
||||
boost::asio::placeholders::error)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (!result)
|
||||
{ // request is not parseable
|
||||
@ -149,7 +143,6 @@ void Connection::handle_read(const boost::system::error_code &e, std::size_t byt
|
||||
boost::asio::placeholders::error,
|
||||
boost::asio::placeholders::bytes_transferred)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Handle completion of a write operation.
|
||||
|
Loading…
Reference in New Issue
Block a user