Exemple #1
0
 private void Clear()
 {
     mInnerState          = InnerState.Idle;
     mGetVersionInfoEvent = null;
     mReqResult           = null;
     UrlList         = null;
     mCurReqUrlIndex = DefaultUrlsReqIndex;
     mCurRequest     = null;
 }
Exemple #2
0
        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;
                    }
                }
            });
        }