MOOON-server新消息处理接口

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

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

下面是接口的定义:

/***
  * 消息观察者
  * 收到一个完整的消息时调用
  * 如果你的消息头和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; // 长连接时
    }
};

本文出自 “飞月” 博客,请务必保留此出处http://mooon.blog.51cto.com/1246491/941084

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索接口
, return
, 消息
, virtual
, 一个
新消息
mooonfish、mooon cafe、acgmooon、mooon、dealmooon,以便于您获取更多的相关知识。

时间: 2025-01-03 08:11:24

MOOON-server新消息处理接口的相关文章

php利用新浪接口查询ip获取地理位置

 这篇文章主要介绍了php利用新浪接口查询ip获取地理位置示例,大家参考使用吧  代码如下: <?php  function getIPLoc_sina($queryIP){     $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP;     $ch = curl_init($url);      curl_setopt($ch,CURLOPT_ENCODING ,'utf

数据库-sql server新插入一列报错

问题描述 sql server新插入一列报错 sqlserver数据库想在一列后面新加一列 alter table Factors_copy Add EPIBS DECIMAL(18,5) AFTER ETP5 总是会报错 [Err] 42000 - [SQL Server]'AFTER' 附近有语法错误. 是不是sqlserver不支持这么写呢 急,请问该怎么解决 解决方案 sql server的语法 ALTER TABLE 表名 add 字段 数据类型 其他约束 示例 ALETER TABL

HTML5新元素,新属性及新JavaScript接口的一些复杂新特性

尽管http://www.aliyun.com/zixun/aggregation/79228.html"> HTML5 的实现还有很长的路要走,但 HTML5 正在改变 Web. 作为新一代的 HTML 标准,HTML5 不仅强化了 Web 网页的表现性能,还追加了本地数据库等 Web 应用的功能.虽然 HTML5 标准仍处于完善之中.然而,大部分新版本的浏览器已经能够支持某些 HTML5 的功能了.HTML5 标准所描述的功能非常强大,如:它提供了一些新的元素和属性,例如 <na

Android framework/base 下添加新的接口

过程如下: 先在framework/base 下创建一目录叫venus /venus 目录下有两个文件夹: |-- java | `-- android `-- jni |-- Android.mk |-- jni.cpp java 下的类包遵循java 类包命名规则,好了,进入关键的第二步: 在文件build/core/pathmap.mk中的FRAMEWORKS_BASE_SUBDIRS变量里添加 venus\ OK,大功告成, 在Android 源码目录执行如下命令: make updat

php利用新浪接口查询ip获取地理位置示例_php实例

复制代码 代码如下: <?php function getIPLoc_sina($queryIP){    $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP;    $ch = curl_init($url);     curl_setopt($ch,CURLOPT_ENCODING ,'utf8');     curl_setopt($ch, CURLOPT_TIMEOU

Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析_Android

     在上一篇文章中,我们分析了Android系统进程间通信机制Binder中的Server在启动过程使用Service Manager的addService接口把自己添加到Service Manager守护过程中接受管理.在这一篇文章中,我们将深入到Binder驱动程序源代码去分析Client是如何通过Service Manager的getService接口中来获得Server远程接口的.Client只有获得了Server的远程接口之后,才能进一步调用Server提供的服务.       

Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路_Android

        在前面一篇文章浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路中,介绍了Service Manager是如何成为Binder机制的守护进程的.既然作为守护进程,Service Manager的职责当然就是为Server和Client服务了.那么,Server和Client如何获得Service Manager接口,进而享受它提供的服务呢?本文将简要分析Server和Client获得Service Manager的过程.     

新浪财经-新浪finance的接口如何获取复权后的数据?参数是什么?

问题描述 新浪finance的接口如何获取复权后的数据?参数是什么? 在一个网站看到有如下新浪接口,可以获得股票的历史数据的XML格式. biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?symbol=sh000001&end_date=20120101 但是在网上并没有找到详细的参数文档. 不知道我该如何通过这个接口获取复权后的数据?

php版新浪支付接口之新建接口笔记

在使用新浪支付接口的时候,需要进行一个接口的创建,刚刚由夏日博客新建的一个新浪接口,整合的是方维P2P网贷系统,下面这个接口还是比较简单的,只是一个解绑认证信息的接口,也就是解绑我们在新浪上面的身份证等信息,操作步骤如下,仅供夏日参考学习使用. 1,后台复制一个按钮链接 2,/admin/Tpl/default/Common/js/user.js 添加一个跳转,注意名字 3, php添加一个类,路径-->app/lib/module/collocationModule.class.php,代码如