: request_timer_(io_service),
request_timeout_(request_timeout),
socket_(io_service),
+ socket_callback_(boost::bind(&HttpConnection::socketReadCallback, this,
+ _1, _2)),
+ socket_write_callback_(boost::bind(&HttpConnection::socketWriteCallback,
+ this, _1, _2)),
acceptor_(acceptor),
connection_pool_(connection_pool),
response_creator_(response_creator),
void
HttpConnection::asyncAccept() {
HttpAcceptorCallback cb = boost::bind(&HttpConnection::acceptorCallback,
- shared_from_this(), _1);
+ this, _1);
try {
acceptor_.asyncAccept(socket_, cb);
HttpConnection::doRead() {
try {
TCPEndpoint endpoint;
- SocketCallback cb(boost::bind(&HttpConnection::socketReadCallback,
- shared_from_this(), _1, _2));
socket_.asyncReceive(static_cast<void*>(buf_.data()), buf_.size(),
- 0, &endpoint, cb);
+ 0, &endpoint, socket_callback_);
} catch (const std::exception& ex) {
stopThisConnection();
HttpConnection::doWrite() {
try {
if (!output_buf_.empty()) {
- SocketCallback cb(boost::bind(&HttpConnection::socketWriteCallback,
- shared_from_this(), _1, _2));
socket_.asyncSend(output_buf_.data(),
output_buf_.length(),
- cb);
+ socket_write_callback_);
} else {
stopThisConnection();
}
void
HttpConnection::acceptorCallback(const boost::system::error_code& ec) {
- // Operation is aborted when the acceptor is cancelled, as a result
- // of stopping the connection. This is not an error condition.
- if (ec.value() == boost::asio::error::operation_aborted) {
- return;
- }
-
if (!acceptor_.isOpen()) {
return;
}
HTTP_REQUEST_RECEIVE_START)
.arg(getRemoteEndpointAddressAsText())
.arg(static_cast<unsigned>(request_timeout_/1000));
- request_timer_.setup(boost::bind(&HttpConnection::requestTimeoutCallback,
- shared_from_this()),
+ request_timer_.setup(boost::bind(&HttpConnection::requestTimeoutCallback, this),
request_timeout_, IntervalTimer::ONE_SHOT);
doRead();
}
#include <http/connection_pool.h>
#include <http/http_acceptor.h>
#include <http/listener.h>
-#include <boost/enable_shared_from_this.hpp>
#include <boost/scoped_ptr.hpp>
-#include <iostream>
using namespace isc::asiolink;
namespace http {
/// @brief Implementation of the @ref HttpListener.
-class HttpListenerImpl : public boost::enable_shared_from_this<HttpListenerImpl> {
+class HttpListenerImpl {
public:
/// @brief Constructor.
// depends on the use case.
HttpResponseCreatorPtr response_creator = creator_factory_->create();
HttpAcceptorCallback acceptor_callback =
- boost::bind(&HttpListenerImpl::acceptHandler, shared_from_this(), _1);
+ boost::bind(&HttpListenerImpl::acceptHandler, this, _1);
HttpConnectionPtr conn(new HttpConnection(io_service_, acceptor_,
connections_,
response_creator,