private void Clear() { mInnerState = InnerState.Idle; mGetVersionInfoEvent = null; mReqResult = null; UrlList = null; mCurReqUrlIndex = DefaultUrlsReqIndex; mCurRequest = null; }
private void StartRequestToHttpServerInternal() { mCurReqUrlIndex++; var rp = GenRawPacket(mCurRequest, (DateTime.Now).ToString("yyyyMMddHHmmssffff")); SetMetadata(rp); var header = new Dictionary <string, string> { { "Content-Type", "application/x-protobuf" }, { "charset", "utf-8" } }; var curUrl = UrlList[mCurReqUrlIndex] + "/lighthouse"; s_mLogger.Info($"Current req url : {curUrl} !"); mHttpManager.PostHttpRequest(curUrl, header, GetRawPacketData(rp), recvData => { if (recvData == null || recvData.Length == 0) { mInnerState = InnerState.WaitForReq; mStartTime = Time.realtimeSinceStartup; return; } var result = new GetVersionResponseInfo(); var receiveData = RawPacket.Parser.ParseFrom(recvData); if (ErrorResponse.Descriptor.FullName.Equals(receiveData.RawAny[0].Uri)) { var errorMsg = ErrorResponse.Parser.ParseFrom(receiveData.RawAny[0].Raw); s_mLogger.Info($"ErrorResponse code : {errorMsg.Code}"); var lighthouse_id = new System.Text.UTF8Encoding(false, true).GetString(errorMsg.Data.ToByteArray()); result.lighthouseId = lighthouse_id; if (errorMsg.Code == APP_UPDATE_ERROR_CODE.MAINTENANCE) { result.maintenance = true; mReqResult = result; mInnerState = InnerState.RequestCompleted; } else if (errorMsg.Code == APP_UPDATE_ERROR_CODE.FORCE_UPDATE) { result.forceUpdate = true; mReqResult = result; mInnerState = InnerState.RequestCompleted; } else { mInnerState = InnerState.RequestFailure; } } else { var msg = EntryPointResponse.Parser.ParseFrom(receiveData.RawAny[0].Raw); var redirectUrl = msg.RedirectURL; if (!string.IsNullOrEmpty(msg.RedirectURL)) { if (!string.Equals(redirectUrl, curUrl)) { UrlList = new string[] { redirectUrl }; mCurReqUrlIndex = DefaultUrlsReqIndex; mStartTime = Time.realtimeSinceStartup; mInnerState = InnerState.WaitForReq; s_mLogger.Info($"{mReqInternal} seconds to redirect request , redirect url : {msg.RedirectURL} ."); return; } } if (CheckEntryPointResponseValid(msg)) { result.url = curUrl; result.forceUpdate = msg.ForceUpdate; result.lighthouseId = msg.LighthouseId; result.maintenance = msg.Maintenance; result.update_detail = new ResUpdateDetail(); s_mLogger.Debug($"DataVersion : {msg.ResourceDetail.DataVersion}"); result.update_detail.DataVersion = msg.ResourceDetail.DataVersion; var versionInfo = msg.ResourceDetail.AndroidVersion ?? msg.ResourceDetail.IOSVersion; s_mLogger.Debug($"ResVersion : {versionInfo}"); result.update_detail.ResVersionNum = versionInfo.Version; result.update_detail.ResVersion = versionInfo.Md5; mReqResult = result; mInnerState = InnerState.RequestCompleted; } else { mInnerState = InnerState.RequestFailure; } } }); }