2009年7月7日星期二

boost::asio的处理模式

今天看了看boost::asio里面附带的几个示例程序.主要是chat那个.

大概了解了点asio的处理这类类似协议解析事件的方法.

解析协议的处理方法,一般做法就是写一个状态机.类似于lighttpd中处理连接的connection_state_machine(),定义了一系列的状态,处理完一段就切换到另一个状态,直至连接终止.

在asio中,对每个异步的调用,比如boost::asio::async_write(), boost::asio::async_read(),函数签名中都有一个handler参数,指定在异步调用完成之后的后续处理.

示例代码中就是在这个参数中指定下一步的处理函数,来完成状态的转换.

没有评论: