asio icon indicating copy to clipboard operation
asio copied to clipboard

io.stopped() remains true after io.restart() when ASIO_ENABLE_HANDLER_TRACKING is defined

Open micjo opened this issue 2 years ago • 0 comments

After calling io.restart() when asio_enable_handler_tracking is enabled, stopped() remains true. even though the documentation states otherwise: image

Am i making a mistake somewhere :

io.stopped() erroneously remains true after io.restart() with handler tracking

#define ASIO_ENABLE_HANDLER_TRACKING
...
    void connect(const EndPoint& endpoint)
    {
        _logger.logInfo("[AsioPimpl::connect] start");
        asio::ip::tcp::endpoint ep(asio::ip::address::from_string(endpoint.ip_address), endpoint.port);
        socket.async_connect(ep, [&](auto ec) {
            _logger.logInfo("connection complete handler");
            _logger.logInfo(ec.message());
        });
        std::cout << io.stopped() << std::endl;
        io.run();
        std::cout << io.stopped() << std::endl;
        io.reset();
        std::cout << io.stopped() << std::endl;
        io.restart();
        std::cout << io.stopped() << std::endl;
    }

output:

[2022.04.14__15:46__45.609572] [tcp] [INFO] [AsioPimpl::connect] start
0
[2022.04.14__15:46__45.610649] [tcp] [INFO] connection complete handler
[2022.04.14__15:46__45.610668] [tcp] [INFO] Success
1
1
1

io.stopped() correctly changes to false after io.restart() without handler tracking

//#define ASIO_ENABLE_HANDLER_TRACKING
...
 void connect(const EndPoint& endpoint)
    {
        _logger.logInfo("[AsioPimpl::connect] start");
        asio::ip::tcp::endpoint ep(asio::ip::address::from_string(endpoint.ip_address), endpoint.port);
        socket.async_connect(ep, [&](auto ec) {
            _logger.logInfo("connection complete handler");
            _logger.logInfo(ec.message());
        });
        std::cout << io.stopped() << std::endl;
        io.run();
        std::cout << io.stopped() << std::endl;
        io.reset();
        std::cout << io.stopped() << std::endl;
        io.restart();
        std::cout << io.stopped() << std::endl;
    }

output:

[2022.04.14__15:49__59.403527] [tcp] [INFO] [AsioPimpl::connect] start
0
[2022.04.14__15:49__59.404528] [tcp] [INFO] connection complete handler
[2022.04.14__15:49__59.404558] [tcp] [INFO] Success
1
0
0

environment: gcc 11.2.0 kernel 5.17.1 asio 1.22.0

micjo avatar Apr 13 '22 15:04 micjo