在库的Chat示例中,我看到有一个“chat_message”标题声明了一个类。在那个课程中,我可以看到以下功能 - 其他功能 - :
const char* body() const
{
return data_ + header_length;
}
char* body()
{
return data_ + header_length;
}
std::size_t body_length() const
{
return body_length_;
}
我这里只看到访问者,没有变异者。但是,在“chat_session”类中,即使没有任何mutator,处理程序也会使用此类。但是,我猜想“chat_message”的成员变量会以某种方式被修改。从“chat_session”中看到这段代码:
void handle_read_header(const boost::system::error_code& error)
{
if (!error && read_msg_.decode_header())
{
boost::asio::async_read(socket_,
boost::asio::buffer(read_msg_.body(), read_msg_.body_length()),
boost::bind(&chat_session::handle_read_body, shared_from_this(),
boost::asio::placeholders::error));
}
else
{
room_.leave(shared_from_this());
}
}
void handle_read_body(const boost::system::error_code& error)
{
if (!error)
{
room_.deliver(read_msg_);
boost::asio::async_read(socket_,
boost::asio::buffer(read_msg_.data(), chat_message::header_length),
boost::bind(&chat_session::handle_read_header, shared_from_this(),
boost::asio::placeholders::error));
}
else
{
room_.leave(shared_from_this());
}
}
我想在“async_read”中,收到的数据以某种方式传递给对象,但我不明白如何。
你能解释一下数据是如何从“async_read”传递到对象的吗?
非常感谢你。