Если вы используете асинхронные методы, обработчик завершения, заданный для async_read
, будет указывать количество полученных байтов.Точно так же обработчик завершения, данный async_write
, будет указывать количество записанных байтов.Было бы тривиально поддерживать счетчик выполнения в качестве члена класса, в котором вы связываете методы как ранее описанные обработчики завершения.
#include <boost/asio.hpp>
#include <iostream>
class Socket
{
public:
Socket(
boost::asio::io_service& io_service
) :
_socket( io_service ),
_counter( 0 )
{
}
void readHandler(
const boost::system::error_code& error,
std::size_t bytes_transferred
)
{
_counter += bytes_transferred;
}
void writeHHandler(
const boost::system::error_code& error,
std::size_t bytes_transferred
)
{
_counter += bytes_transferred;
}
private:
boost::asio::ip::tcp::socket _socket;
std::size_t _counter;
};
int
main()
{
boost::asio::io_service io_service;
Socket foo( io_service );
}