后回调用户的函数。不过,一个简单的间接层就能解决问题,让用户代码只关心“消息到达”而不是“数据到达”,如本例中的 LengthHeaderCodec 所展示的那一样。
1: #ifndef MUDUO_EXAMPLES_ASIO_CHAT_CODEC_H 2: #define MUDUO_EXAMPLES_ASIO_CHAT_CODEC_H 3: 4: #include 5: #include 6: #include 7: #include 8: 9: #include 10: #include 11: 12: using muduo::Logger; 13: 14: class LengthHeaderCodec : boost::noncopyable 15: { 16: public: 17: typedef boost::function StringMessageCallback; 20: 21: explicit LengthHeaderCodec(const StringMessageCallback& cb) 22: : messageCallback_(cb) 23: { 24: } 25: 26: void onMessage(const muduo::net::TcpConnectionPtr& conn, 27: &