Boost logo

Boost Users :

Subject: [Boost-users] Boost::Asio No write handler called after async_write
From: David Narvaez (david.e.narvaez_at_[hidden])
Date: 2009-04-14 00:18:46


Hi everyone, this (I think) is about boost::asio. Could somebody please tell
me why in the following code my handle_write function is never called after
the async_write? This tries to be an hybrid mixture of sync read and async
write through a socket and even though the string gets written, no handler
is called at the end.

#include <boost/asio.hpp>
#include <boost/thread.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
#include <boost/bind.hpp>
#include <iostream>
#include <string>

using boost::asio::ip::tcp;
using namespace std;

class Server : public boost::enable_shared_from_this<Server> {
public:
    Server();
    virtual ~Server();
    void run(tcp::socket &);
    void handle_write(const boost::system::error_code &, size_t);
};

Server::Server() {
}

Server::~Server() {
}

void Server::run(tcp::socket & sock) {
    string message("Hi!");

    try {
        async_write(sock, boost::asio::buffer(message), boost::bind(
                &Server::handle_write,
                shared_from_this(),
                boost::asio::placeholders::error,
                boost::asio::placeholders::bytes_transferred));
    } catch (exception& e) {
        cerr << e.what() << endl;
    }

    return;
}
void Server::handle_write(const boost::system::error_code & errc, size_t
bytes) {
    cout << "Function called" << endl;

    return;
}

int main() {
    try {
        boost::asio::io_service ioserv;
        tcp::acceptor acceptor(ioserv, tcp::endpoint(tcp::v4(), 1337));
        boost::shared_ptr<Server> newserver(new Server());
        for (;;) {
            tcp::socket newsocket(ioserv);
            acceptor.accept(newsocket);

            cout << "Somebody arrived" << endl;
            newserver->run(newsocket);
        }
    } catch (exception& e) {
        cerr << e.what() << endl;
    }

    return 0;
}



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net