Esempio n. 1
0
        private static List <string> CompareDiffList(ResListFile oldFileList, ResListFile newFileList)
        {
            if (newFileList == null)
            {
                return(null);
            }

            List <string> ret = null;

            if (oldFileList == null)
            {
                var infos = newFileList.AllToDiffInfos();
                if (infos == null || infos.Length <= 0)
                {
                    return(ret);
                }
                for (int i = 0; i < infos.Length; ++i)
                {
                    var info = infos[i];
                    if (string.IsNullOrEmpty(info.fileName) || string.IsNullOrEmpty(info.fileContentMd5))
                    {
                        continue;
                    }

                    if (ret == null)
                    {
                        ret = new List <string>();
                    }
                    // 更新的文件都是以MD5为文件名的
                    ret.Add(info.fileContentMd5);
                }
            }
            else
            {
                var iter = newFileList.GetIter();
                while (iter.MoveNext())
                {
                    string oldMd5 = oldFileList.GetFileContentMd5(iter.Current.Key);
                    if (string.Compare(oldMd5, iter.Current.Value.fileContentMd5) != 0)
                    {
                        if (string.IsNullOrEmpty(iter.Current.Value.fileContentMd5))
                        {
                            continue;
                        }

                        if (ret == null)
                        {
                            ret = new List <string>();
                        }
                        ret.Add(iter.Current.Value.fileContentMd5);
                    }
                }
                iter.Dispose();
            }

            return(ret);
        }
Esempio n. 2
0
        void OnReadEvent(HttpClientResponse response, long totalReadBytes)
        {
            if (totalReadBytes >= response.MaxReadBytes)
            {
                HttpClientStrResponse r = response as HttpClientStrResponse;
                string fileList         = r.Txt;
                if (string.IsNullOrEmpty(fileList))
                {
                    AutoUpdateMgr.Instance.EndAutoUpdate();
                    return;
                }

                string writePath   = AutoUpdateMgr.Instance.WritePath;
                string srcFileName = string.Format("{0}/{1}", writePath, AutoUpdateMgr._cFileListTxt);
                if (!File.Exists(srcFileName))
                {
                    // 直接生成写到update.txt里
                    ResListFile resListFile = AutoUpdateMgr.Instance.ServerResListFile;
                    resListFile.Load(fileList);
                    ResListFile.ResDiffInfo[] infos = resListFile.AllToDiffInfos();

                    AutoUpdateMgr.Instance.UpdateToUpdateTxt(infos);
                    AutoUpdateMgr.Instance.UpdateTotalDownloadBytes(infos);

                    ToNextState();
                    return;
                }

                ResListFile srcListFile = AutoUpdateMgr.Instance.LocalResListFile;
                ResListFile dstListFile = AutoUpdateMgr.Instance.ServerResListFile;

                dstListFile.Load(fileList);

                ResListFile.ResDiffInfo[] diffInfos = srcListFile.GetDiffInfos(dstListFile);

                AutoUpdateMgr.Instance.UpdateToUpdateTxt(diffInfos);
                AutoUpdateMgr.Instance.UpdateTotalDownloadBytes(diffInfos);
                ToNextState();
            }
        }
Esempio n. 3
0
        void DoFileListTxt(string fileList)
        {
            if (string.IsNullOrEmpty(fileList))
            {
                AutoUpdateMgr.Instance.EndAutoUpdate();
                return;
            }

            string writePath   = AutoUpdateMgr.Instance.WritePath;
            string srcFileName = StringHelper.Format("{0}/{1}", writePath, AutoUpdateMgr._cFileListTxt);

            if (!File.Exists(srcFileName))
            {
                // 直接生成写到update.txt里
                ResListFile resListFile = AutoUpdateMgr.Instance.ServerResListFile;
                resListFile.Load(fileList);
                ResListFile.ResDiffInfo[] infos = resListFile.AllToDiffInfos();

                AutoUpdateMgr.Instance.UpdateToUpdateTxt(infos);
                AutoUpdateMgr.Instance.UpdateTotalDownloadBytes(infos);

                ToNextState();
                return;
            }

            ResListFile srcListFile = AutoUpdateMgr.Instance.LocalResListFile;
            ResListFile dstListFile = AutoUpdateMgr.Instance.ServerResListFile;

            dstListFile.Load(fileList);

            ResListFile.ResDiffInfo[] diffInfos = srcListFile.GetDiffInfos(dstListFile);

            AutoUpdateMgr.Instance.UpdateToUpdateTxt(diffInfos);
            AutoUpdateMgr.Instance.UpdateTotalDownloadBytes(diffInfos);
            ToNextState();
        }