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
HashMap#- size()
Declared In
QoS4SendDaemon.h
– setDebugObserver:
Just for DEBUG.
- (void)setDebugObserver:(ObserverCompletion)debugObserver
Discussion
Just for DEBUG.
Declared In
QoS4SendDaemon.h