Managing generic subscriptions and publishes 管理通用的订阅和发布
宏
#define LinphoneSubscriptionOutgoingInit LinphoneSubscriptionOutgoingInit
#define LinphoneSubscriptionOutgoingInit LinphoneSubscriptionOutgoingProgress
自定义
typedef struct _LinphoneEvent LinphoneEvent
typedef enum _LinphoneSubscriptionDir LinphoneSubscriptionDir
typedef enum _LinphoneSubscriptionState LinphoneSubscriptionState
typedef enum _LinphonePublishState LinphonePublishState
typedef void(*LinphoneCoreNotifyReceivedCb) (LinphoneCore* lc, LinphoneEvent* lev, const char* notified_event, const LinphoneContent* body)
typedef void(* LinphoneCoreSubscriptionStateChangedCb)(LinphoneCore* lc, LinphoneEvent* lev, LinphoneSubscriptionState state)
typedef void(* LinphonePublishStateChangedCb)(LinphoneCore* lc, LinphoneEvent* lev, LinphonePublishState state)
枚举类型
enum _LinphoneSubscriptionDir{
LinphoneSubscriptionIncoming,
LinphoneSubscriptionOutgoing,
LinphoneSubscriptionInvalidDir
}
enum _LinphoneSubscriptionState{
LinphoneSubscriptionNone,
LinphoneSubscriptionOutgoingProgress,
LinphoneSubscriptionIncomingReceived,
LinphoneSubscriptionPending,
LinphoneSubscriptionActive,
LinphoneSubscriptionTerminated,
LinphoneSubscriptionError,
LinphoneSubscriptionExpiring
}
enum _LinphonePublisState{
LinphonePublishNone,
LinphonePublishProgress,
LinphonePublishOk,
LinphonePublishError,
LinphonePublishExpiring,
LinphonePublishCleared
}
函数
详细说明
LinphoneEvent api允许应用程序控制订阅,接收通知和发布到同行(peers),以通用的方式.
自定义文档
typedef void(* LinphoneCoreNotifyReceivedCb)(LinphoneCore* lc, LinphoneEvent *lev, const char* notifief_event, const LinphoneContent* body)
回调原型,用于通知应用程序关于从网络中接受到的通知
typedef void(* LinphoneCorePublishStateChangedCb)(LinphoneCore* lc, LinphoneEvent* lev, LinphonePublishState state)
回调原型,用于通知应用程序关于发布状态变更.
typedef struct _LinphoneEvent LinphoneEvent
代表一个事件状态的对象,其已经订阅或发布
另参见
linphone_core_publish()
linphone_core_subscribe()
typedef enum _LinphonePublishState LinphonePublishState
发布状态的枚举类型
typedef enum _LinphoneSubscriptionDir LinphoneSubscriptionDir
_LinphoneSubscriptionDir的别名
typedef enum _LinphoneSubscriptionState LinphoneSubscriptionState
为订阅状态枚举类型定义
枚举类型文档
enum _LinphonePublishState
为发布状态枚举
枚举成员
LinphonePublishNone 初始状态,不要使用
LinphonePublishProgress 一个向外的发布被创建和提交
LinphonePublishOk 发布被接受
LinphonePublishError 发布出错,linphone_event_get_reason()获取原因代码
LinphonePublishExpiring 发布即将到期,只有发送如果[sip]-refresh_generic_publish属性被设置为0.
LinphonePublishCleared 事件已经被发送
enum _LinphoneSubscriptionDir
为订阅方向枚举(传入或传出)
枚举成员
LinphoneSubscriptionIncoming 传入订阅
LinphoneSubscriptionOutgoing 传出订阅
LinphoneSubscriptionInvalidDir 无效的订阅方向
enum _LinphoneSubscriptionState
为订阅状态枚举
枚举成员
LinphoneSubscriptionNone 初始状态,不应该使用
LinphoneSubscriptionOutgoingProgress 一个传出的订阅被发送
LinphoneSubscriptionIncomingReceived 一个传入的订阅被收到
LinphoneSubscriptionPending 订阅等待中,等待用户的批准
LinphoneSubscriptionActive 订阅被接受
LinphoneSubscriptionTerminated 订阅被正常地终止
LinphoneSubscriptionError 订阅出错,由linphone_event_get_reason()获取出错原因
LinphoneSubscriptionExpiring 订阅将到期,只有发送如果[sip]->refresh_generic_subscribe属性设置为0
函数文档
LinphoneEvent* linphone_core_create_notify(LinphoneCore* lc, const LinphoneAddress* resource, const char* event)
创建一个out-of-dialog通知,指定目的地资源,时间名称.通知可以用linphone_event_notify()来发送
参数
lc LinphoneCore对象
resources 目的地资源
evnet 事件名称
返回
一个包含通知上下文的LinphoneEvent对象
LinphoneEvent* linphone_core_create_publish(LinphoneCore* lc, const LinphoneAddress* resource, const char* event, int expires)
为一个事件状态创建一个发布上下文.创建以后,该发布必须用linphone_event_send_publish()来发送.到期后,出版物被刷新,除非在这之前意见被终止.
参数
lc LinphoneCore对象
resources 事件的源uri
event 事件的名称
expires 发布事件的生命周期,如果没有相关的持续时间设置为-1,在这种情况下,他不会刷新.
返回
一个包含发布上下文的LinphoneEvent对象
LinphoneEvent* linphone_core_create_subscribe(LinphoneCore* lc, const LinphoneAddress* resource, const char* event, int expires)
创建一个传出的订阅,指定目的地址源,事件名称,和可选上下文主体.如果接受,订阅在有效时间内运行,但是如果在没有终止之前,它会自动更新.与linphone_core_subscribe()不一样,订阅不会立即发送.它会在调用linphone_event_send_subscribe()时发送.
参数
lc LinphoneCore对象
resources 目的地源
event 事件名称
expires 订阅的呼呼作声的持续时间
返回
一个包含新建的订阅上下文的LinphoneEvent对象
LinphoneEvent* linphone_core_publish(LinphoneCore* lc, const LinphoneAddress* resource, const char* event, int expires, const LinphoneContent* body)
发布一个事件状态.这首先用linphone_core_create_publish()创建一个LinphoneEvent对象,并调用linphone_event_send_publish()来发送它.到期之后,出版被刷新,除非它在这之前已经被终止.
参数
lc LinphoneCore对象
resources 事件的源URI
event 事件的名称
expires 发送的事件的生命周期,如果没有相关的持续时间设置为-1,在这种情况下它不会被刷新.
body 实际发布的数据
返回
一个包含发布上下文的LinphoneEvent对象
LinphoneEvent* linphone_core_subscribe(LinphoneCore* lc, const LinphoneAddress* resource, const char* event, int expires, const LinphoneContent* body)
创建一个传出的订阅,指定目的地源,事件名称,和一个可选的上下文主体.如果接受,订阅在有限时间内运行, 但是会自动更新,如果没有在这之前没有终止.
参数
lc LinphoneCore对象
resources 目的地源
event 事件名称
expires 订阅的呼呼作声的持续时间
body 可选主体,可能是NULL
返回
一个包含新建的订阅上下文的LinphoneEvent对象
int linphone_event_accept_subscription(LinphoneEvent* lev)
接受一个传入订阅
void linphone_event_add_custom_header(LinphoneEvent* ev, const char* name, const char* value)
添加一个自定义头到一个传出的订阅或者发布
参数
ev LinphoneEvent对象
name 头名字
value 头对应的值
int linphone_event_deny_subscription(LinphoneEvent* lev, LinphoneReason reason)
拒绝一个传入的订阅并附带给定的原因
LinphoneCore* linphone_event_get_core(const LinphoneEvent* lev)
返回创建lev这个LinphoneEvent对象的LinphoneCore对象的指针
const char* linphone_event_get_custom_header(LinphoneEvent* ev, const char* name)
为一个传入订阅获取指定头字段的值
参数
ev LinphoneEvent对象
name 头的名称
返回
头的值, 如果这个头不存在返回NULL.
const LinphoneErrorInfo* linphone_event_get_error_info(const LinphoneEvent* lev)
获取关于一个出错的完整细节
const LinphoneAddress* linphone_event_get_from(const LinphoneEvent* lev)
获取订阅的“from”地址
const char* linphone_event_get_name(const LinphoneEvent* lev)
获取事件的名称,按照事件包RFC指定的.
LinphonePublishState linphone_event_get_publish_state(const LinphoneEvent* lev)
获取发布状态.如果事件对象并不是由发布机制创建的,返回LinphonePublishNone.
LinphoneReason linphone_event_get_reason(const LinphoneEvent* lev)
返回原因的代码(在错误代码到达的情况下)
const LinphoneAddress* linphone_event_get_resource(const LinphoneEvent* lev)
获取订阅或发布的源地址
LinphoneSubscriptionDir linphone_event_get_subscription_dir(LinphoneEvent* lev)
获取订阅的方向,如果对象不是由订阅机制创建的,返回LinphoneSubscriptionInvalidDir.
LinphoneSubscriptionState linphone_event_get_subscription_state(const LinphoneEvent* lev)
获取订阅状态.如果事件对象不是由订阅机制创建的,返回LinphoneSubscriptionNone.
void* linphone_event_get_user_data(const LinphoneEvent* ev)
获取用户指针
参数
lev LinphoneEvent对象对应 预先接收和接受的传入的订阅
body 一个可选主体,包含实际的通知数据.
返回
如果成功返回0,否则返回-1.
void linphone_event_pause_publish(LinphoneEvent* lev)
防止一个事件刷新它的发布.这有利于让注册自然地到期(或者)当应用程序想保持控制刷新发送.刷新操作可以用linphone_proxy_config_refresh_register()恢复.
参数
[in] lev LinphoneEvent对象
LinphoneEvent* linphone_event_ref(LinphoneEvent* lev)
增加LinphoneEvent对象的引用计数.由默认的LinphoneEvents被创建由指定的core,那么它只属于这个core.应用程序希望保存一个指向它的引用,必须调用linphone_event_ref().当这个引用不在需要的时候,必须调用linphone_event_unref().
int linphone_event_refresh_publish(LinphoneEvent* lev)
刷新一个传出发布保持一样的主体
参数
lev LinphoneEvent对象
返回
如果成功返回0,否则返回-1
int linphone_event_refresh_subscribe(LinphoneEvent* lev)
刷新一个传出的订阅保持一样的主体
参数
lev LinphoneEvent对象
返回
如果成功返回0,否则返回-1
int linphone_event_send_publish(LinphoneEvent* lev, const LinphoneContent* body)
发送一个发布,由linphone_core_create_subscribe()创建的.
参数
ev LinphoneEvent对象
body 新发布的数据
int linphone_event_send_subscribe(LinphoneEvent* ev, const LinphoneContent* body)
发送一个订阅,预先由linphone_core_create_subscribe()创建的
参数
ev LinphoneEvent对象
body 可选内容附加订阅
返回
如果成功返回0,否则返回-1.
void linphone_event_set_user_data(LinphoneEvent* ev, void* up)
设置一个用户(应用程序)指针
void linphone_event_terminate(LinphoneEvent* lev)
终止以前接受到传入或传出的订阅,或一个以前的出版物.在这个操作之后,LinphoneEvent不应再被使用.除非应用程序明确地用linphone_event_ref()获取一个对象的引用.
void linphone_event_unref(LinphoneEvent* lev)
减少引用计数
另参见
linphone_event_ref()
int linphone_event_update_publish(LinphoneEvent* lev, const LinphoneContent* body)
更新(刷新)一个发布
参数
lev LinphoneEvent对象
body 要发布的新数据
int linphone_event_updata_subscribe(LinphoneEvent* lev, const LinphoneContent* body)
更新(刷新)一个传出订阅,改变主体
参数
lev LinphoneEvent对象
body 包含在订阅更新中的一个可选主体,可能是NULL