nosun / skyiot

Document and Thought about IOT
1 stars 3 forks source link

sdk bug[5-11] 多路上报(小循环+Mqtt+第三方推送)的过滤机制,没有考虑乱序的问题 #21

Open evanwang1021 opened 9 years ago

evanwang1021 commented 9 years ago

解决方案: 针对某台设备的Mac,根据包SN的增序来过滤乱序的包,前提是sn一直保持增序。如果出现模块重启导致的sn归0,则针对sn<5(前面会有登录、心跳等包)的情况做特殊处理。 数据结构采用Map<String, Queue>,针对每个mac设备维护一个报文循环队列。只有比队首的sn大才能入队,或者是归0后的sn可入队,或者是队首达到超时时间(长时间收不到推送),任何sn都可入队。