前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MOOON-server新消息处理接口

MOOON-server新消息处理接口

作者头像
一见
发布2018-08-07 17:16:09
3860
发布2018-08-07 17:16:09
举报
文章被收录于专栏:蓝天蓝天

    MOOON-server提供了一个通用的TCP框架,并对包的解析抽象出了IPacketHandler接口,这个接口提供了无限制的宽容度,支持任何协议,但是增加了使用复杂。

    由于大多数协议,都会定义一个消息包大小字段,基于这个前提,MOOON-server引用了新的接口IMessageObserver,它能够解析任何包头是net::TCommonMessageHeader的消息,在一个包解析完整后(包括包头和包体都已经接收完成),通过回调on_message()将消息传递给使用者,这样就大大简化了MOOON-server的编程。

下面是接口的定义:

代码语言:javascript
复制
/***

 * 消息观察者

 * 收到一个完整的消息时调用

 * 如果你的消息头和net::TCommonMessageHeader一致,

 * 则建议使用IMessageObserver,而不是IPacketHandler,

 * IMessageObserver相对于IPacketHandler是更高级别的接口

 */

class CALLBACK_INTERFACE IMessageObserver

{

public:

    virtual ~IMessageObserver() {}



 /***

 * 收到一个完整消息时被回调

 * @request_header 输入参数,收到的消息头

 * @request_body 输入参数,收到的消息体


     *  这里需要注意,框架不会释放request_body的内存,需要使用者去释放
      *  释放方法为:delete []request_body;,否则将有内存泄漏
 * @response_buffer 输出参数,发送给对端的响应,默认值为NULL

 *  请注意*response_buffer必须是new char[]出来的,

 *  并且将由框架delete []它

 * @response_size 输出参数,需要发送给对端的响应数据字节数,默认值为0

 * @return 处理成功返回true,否则返回false

 */

    virtual bool on_message(const net::TCommonMessageHeader& request_header

 , const char* request_body

 , char** response_buffer

 , size_t* response_sizer) = 0;



 /***

 * 连接被关闭

 */

    virtual void on_connection_closed()

 {

 }



 /***

 * 连接超时

 * @return 如果返回true,确认是连接超时,连接将被关闭

 *        ;否则表示并未超时,连接会继续使用,同时时间戳会被更新

 */

    virtual bool on_connection_timeout()

 {

        return true;

 }



 /***

 * 包发送完后被回调

 * @return util::handle_continue 表示不关闭连接继续使用,

 *         返回其它值则会关闭连接

 */

    virtual util::handle_result_t on_response_completed()

 {

 //return util::handle_close; // 短连接时

        return util::handle_continue; // 长连接时

 }

};
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-07-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档