QoS4ReciveDaemon Class Reference

Inherits from NSObject
Declared in QoS4ReciveDaemon.h

Overview

QoS机制中提供对已收到包进行有限生命周期存储并提供重复性判断的守护线程。

原理是:当收到需QoS机制支持消息包时,会把它的唯一特征码(即指纹id)存放于本类的“已收到”消息队列中,寿命约为 MESSAGES_VALID_TIME 指明 的时间,每当 CHECH_INTERVAL 定时检查间隔到来时会对其存活期进行检查 ,超期将被移除,否则允许其继续存活。理论情况下,一个包的最大寿命不可能超过2 倍的 CHECH_INTERVAL 时长。
补充说明“超期”即意味着对方要么已收到应答包(这是QoS机制正常情况下的表现)而无需再次重传、要么是已经达到QoS机制的重试极限而无可能再收 到重复包(那么在本类列表中该表也就没有必要再记录了)。总之,“超期”是队列中这些消息包的正常生命周期的终止,无需过多解读。

本类存在的意义在于:极端情况下QoS机制中存在因网络丢包导致应答包的丢失而触发重传机制从而导致消息重复,而本类将维护一个有限时间段内收到的所有 需要QoS支持的消息的指纹列表且提供“重复性”判断机制,从而保证应用层绝不会因为QoS的重传机制而导致重复收到消息的情况。

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

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

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

+ sharedInstance

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

+ (QoS4ReciveDaemon *)sharedInstance

Discussion

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

Declared In

QoS4ReciveDaemon.h

– startup:

启动线程。

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

- (void)startup:(BOOL)immediately

Parameters

immediately

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

Discussion

启动线程。

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

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

Declared In

QoS4ReciveDaemon.h

– stop

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

- (void)stop

Discussion

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

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

Declared In

QoS4ReciveDaemon.h

– isRunning

线程是否正在运行中。

- (BOOL)isRunning

Return Value

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

Discussion

线程是否正在运行中。

Declared In

QoS4ReciveDaemon.h

– addRecieved:

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

- (void)addRecieved:(Protocal *)p

Discussion

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

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

@param p

Declared In

QoS4ReciveDaemon.h

– addRecievedWithFingerPrint:

向列表中加入一个包的特征指纹。

- (void)addRecievedWithFingerPrint:(NSString *)fingerPrintOfProtocal

Parameters

fingerPrintOfProtocal

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

Discussion

向列表中加入一个包的特征指纹。

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

Declared In

QoS4ReciveDaemon.h

– hasRecieved:

指定指纹码的Protocal是否已经收到过.

此方法用于QoS机制中在防止因网络丢包导致对方未收到应答时而再次发送消息从而导致消息重复时的判断依赖.

- (BOOL)hasRecieved:(NSString *)fingerPrintOfProtocal

Parameters

fingerPrintOfProtocal

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

Discussion

指定指纹码的Protocal是否已经收到过.

此方法用于QoS机制中在防止因网络丢包导致对方未收到应答时而再次发送消息从而导致消息重复时的判断依赖.

Declared In

QoS4ReciveDaemon.h

– clear

清空缓存队列。

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

- (void)clear

Availability

3.2

Discussion

清空缓存队列。

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

Declared In

QoS4ReciveDaemon.h

– size

当前“已收到消息”队列列表的大小.

- (unsigned long)size

Discussion

当前“已收到消息”队列列表的大小.

@return

Declared In

QoS4ReciveDaemon.h

– setDebugObserver:

Just for DEBUG.

- (void)setDebugObserver:(ObserverCompletion)debugObserver

Discussion

Just for DEBUG.

Declared In

QoS4ReciveDaemon.h