QoS4SendDaemon Class Reference

Inherits from NSObject
Declared in QoS4SendDaemon.h

Overview

QoS机制中提供消息送达质量保证的守护线程。
本类是QoS机制的核心,极端情况下将弥补因UDP协议天生的不可靠性而带来的丢包情况。

当前MobileIMSDK的QoS机制支持全部的C2C、C2S、S2C共3种消息交互场景下的消息送达质量保证.

Warning: 本线程的启停,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。

FIXME: 按照目前MobileIMSDK通信机制的设计原理,有1种非常极端的情况目前的QoS 重传绝对不会成功,那就是当对方非正常退出,而本地并未及时(在服务会话超时时间内)收到 他下线通知,此时间间隔内发的消息,本地将尝试重传。但对方在重传重试期限内正常登陆也将 绝不会收到,为什么呢?因为对方再次登陆时user_id已经更新成新的了,之前的包记录的发送 目的地还是老user_id。这种情况可以改善,那就是这样的包里还记录它的登陆名,服务端将据 user_id尝试给目标发消息,但user_id不存在的情况下(即刚才这种情况)可以用登陆名尝试 找到它的新user_id,从而向新user_id发消息就可以让对方收到了。目前为了最大程度保证算 法的合理性和简洁性暂不实现这个了,好在客户端业务层可无条件判定并提示该消息没有成功发 送,那此种情况在应用层的体验上也是可接受的!

@author Jack Jiang(http://www.52im.net/thread-2792-1-1.html)) @version 1.1

+ sharedInstance

获取本类的单例。使用单例访问本类的所有资源是唯一的合法途径。

+ (QoS4SendDaemon *)sharedInstance

Discussion

获取本类的单例。使用单例访问本类的所有资源是唯一的合法途径。

Declared In

QoS4SendDaemon.h

– startup:

启动线程。

无论本方法调用前线程是否已经在运行中,都会尝试首先调用 stop 方法,以便确保线程被启动前是真正处于停止状态,这也意味着可无害调用本方法。

- (void)startup:(BOOL)immediately

Parameters

immediately

true表示立即执行线程作业,否则直到 AUTO_RE$LOGIN_INTERVAL 执行间隔的到来才进行首次作业的执行

Discussion

启动线程。

无论本方法调用前线程是否已经在运行中,都会尝试首先调用 stop 方法,以便确保线程被启动前是真正处于停止状态,这也意味着可无害调用本方法。

Warning: 本线程的启停,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。

Declared In

QoS4SendDaemon.h

– stop

无条件中断本线程的运行。

- (void)stop

Discussion

无条件中断本线程的运行。

Warning: 本线程的启停,目前属于MobileIMSDK算法的一部分,暂时无需也不建议由应用层自行调用。

Declared In

QoS4SendDaemon.h

– isRunning

线程是否正在运行中。

- (BOOL)isRunning

Return Value

true表示是,否则线路处于停止状态

Discussion

线程是否正在运行中。

Declared In

QoS4SendDaemon.h

– exist:

该包是否已存在于队列中。

- (BOOL)exist:(NSString *)fingerPrint

Parameters

fingerPrint

消息包的特纹特征码(理论上是唯一的) @return

Discussion

该包是否已存在于队列中。

Declared In

QoS4SendDaemon.h

– put:

推入一个消息包的指纹特征码.
注意:本方法只会将指纹码推入,而不是将整个Protocal对象放入列表中。

- (void)put:(Protocal *)p

Discussion

推入一个消息包的指纹特征码.
注意:本方法只会将指纹码推入,而不是将整个Protocal对象放入列表中。

@param p

Declared In

QoS4SendDaemon.h

– remove:

移除一个消息包.

此操作是在步异线程中完成,目的是尽一切可能避免可能存在的阻塞本类中的守望护线程.

- (void)remove:(NSString *)fingerPrint

Parameters

fingerPrint

消息包的特纹特征码(理论上是唯一的) @return

Discussion

移除一个消息包.

此操作是在步异线程中完成,目的是尽一切可能避免可能存在的阻塞本类中的守望护线程.

Declared In

QoS4SendDaemon.h

– clear

清空缓存队列。

调用此方法可以防止在APP不退出的情况下退出登陆MobileIMSDK时没有清除队列缓存,导致此时换用另一账号时发生数据交叉。

- (void)clear

Availability

3.2, 20180103

Discussion

清空缓存队列。

调用此方法可以防止在APP不退出的情况下退出登陆MobileIMSDK时没有清除队列缓存,导致此时换用另一账号时发生数据交叉。

Declared In

QoS4SendDaemon.h

– size

队列大小.

- (unsigned long)size

Discussion

队列大小.

@return

See Also

Declared In

QoS4SendDaemon.h

– setDebugObserver:

Just for DEBUG.

- (void)setDebugObserver:(ObserverCompletion)debugObserver

Discussion

Just for DEBUG.

Declared In

QoS4SendDaemon.h