Asterisk Stasis消息总线(Message Bus)之ast_network_change_type分析之一

一、概述

       Asterisk从12版本开始就引入了Stasis Message Bus。Stasis虽然是一个内部publish/subscribe message,但是它可以支持Asterisk实时core或者其他的模块的事件获取,如果有系统用户订阅了实时core或者其他模块的指定消息以后,它负责处理用户这些关注的事件。如果其他相关的资源需要进行实时处理时,可以对你模块进行订阅,或者要求推送这些信息,这样可以进一步确保信息的一致性。一些实时功能模块,例如CDR,AMI或者现在的新API接口ARI很多时候确实需要通过这些实时信息来处理模块本身的逻辑。比如,呼叫录音或者计费的问题。

二、ast_network_change_type分析

1、定义

STASIS_MESSAGE_TYPE_DEFN的宏为:

/*!

* \brief Boiler-plate messaging macro for defining public message types.

*

* \code

*    STASIS_MESSAGE_TYPE_DEFN(ast_foo_type,

*        .to_ami = foo_to_ami,

*        .to_json = foo_to_json,

*        .to_event = foo_to_event,

*        );

* \endcode

*

* \param name Name of message type.

* \param ... Virtual table methods for messages of this type.

* \since 12

*/

#define STASIS_MESSAGE_TYPE_DEFN(name, ...)                \

    static struct stasis_message_vtable

你可能感兴趣的:(Asterisk Stasis消息总线(Message Bus)之ast_network_change_type分析之一)