/// <summary> /// 创建实例 /// </summary> public static SocketReconnectSuccessRequest create(int lastReceiveIndex) { SocketReconnectSuccessRequest re = (SocketReconnectSuccessRequest)BytesControl.createRequest(dataID); re.lastReceiveIndex = lastReceiveIndex; return(re); }
/** 重连的下一步(主线程) */ protected void doReconnectNext(short lastReceiveIndex, bool needReMsg) { short dd = indexD(_sendMsgIndex, lastReceiveIndex); if (dd < 0 || dd >= ShineSetting.requestCacheLen) { Ctrl.warnLog("重连时,消息缓存已失效"); closeForIO(Close_ReconnectFailed, false); return; } if (needReMsg) { sendAbs(SocketReconnectSuccessRequest.create(_receiveMsgIndex)); } for (short i = lastReceiveIndex; i != _sendMsgIndex; i++) { BaseRequest request = _sendCacheRequestQueue[i & ShineSetting.requestCacheMark]; if (request == null) { Ctrl.warnLog("找不到缓存消息,或是超时被释放"); closeForIO(Close_ReconnectFailed, false); return; } else { doWriteRequestToStream(request, i); } } _reconnecting = false; _disConnectLastSendIndex = 0; //推送一次 toFlush(); Ctrl.log("socket重连成功:"); }