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); }
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(); } }
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(); }