void Connection::handleReadBody(ReplyPtr reply, const asio_error_code& e, std::size_t bytes_transferred) { LOG_DEBUG(socket().native() << ": handleReadBody(): " << e.message()); if (disconnectCallback_) { if (e && e != asio::error::operation_aborted) { boost::function<void()> f = disconnectCallback_; disconnectCallback_ = boost::function<void()>(); f(); } else if (e != asio::error::operation_aborted) { LOG_ERROR(socket().native() << ": handleReadBody(): while waiting for disconnect, " "unexpected error code: " << e.message()); close(); } return; } cancelReadTimer(); if (!e) { rcv_remaining_ = rcv_buffers_.back().data(); rcv_buffer_size_ = bytes_transferred; handleReadBody(reply); } else if (e != asio::error::operation_aborted && e != asio::error::bad_descriptor) { reply->consumeData(rcv_remaining_, rcv_remaining_, Request::Error); handleError(e); } }
void Connection::close() { cancelReadTimer(); cancelWriteTimer(); LOG_DEBUG(socket().native() << ": close()"); ConnectionManager_.stop(shared_from_this()); }
void Connection::handleReadRequest(const asio_error_code& e, std::size_t bytes_transferred) { LOG_DEBUG(socket().native() << ": handleReadRequest(): " << e.message()); cancelReadTimer(); if (!e) { remaining_ = buffer_.data(); buffer_size_ = bytes_transferred; handleReadRequest0(); } else if (e != asio::error::operation_aborted && e != asio::error::bad_descriptor) { handleError(e); } }