static void onGetVerinfor(params object[] param) { byte[] content = param[0] as byte[]; object orgs = param[1]; if (content != null) { string fPath = orgs as string; progress = progress + 1; MapEx.set(localverVer, fPath, MapEx.getString(serververVer, fPath)); string fName = PStr.b().a(CLPathCfg.persistentDataPath).a("/").a(newestVerPath).a("/").a(fPath).e(); if (Path.GetFileName(fName) == "priority.ver") { //-- 优先更新需要把所有资源更新完后才记录 isNeedUpgradePriority = true; serverPriorityVer = CLVerManager.self.toMap(content); CLVerManager.self.localPriorityVer = serverPriorityVer; } else { otherResVerNew = CLVerManager.self.toMap(content); CLVerManager.self.otherResVerNew = otherResVerNew; } MapEx.set(needUpgradeVerver, fPath, true); if (progressCallback != null) { Utl.doCallback(progressCallback, needUpgradeVerver.Count, progress); } //-- if (isFinishAllGet()) then if (needUpgradeVerver.Count == progress) { if (!isNeedUpgradePriority) { //-- 说明没有优先资源需要更新,可以不做其它处理了 //--同步到本地 loadPriorityVer(); loadOtherResVer(true); } else { checkPriority(); //--处理优先资源更新 } } } else { initFailed(); } }
static void checkVervers() { progress = 0; needUpgradeVerver.Clear(); isNeedUpgradePriority = false; string ver = null; ArrayList keysList = MapEx.keys2List(serververVer); int count = keysList.Count; string basePath = CLPathCfg.self.basePath; string key = ""; for (int i = 0; i < count; i++) { key = keysList[i] as string; ver = MapEx.getString(localverVer, key); //实际上这个时间localverVer是空的 if (ver == null || ver != MapEx.getString(serververVer, key)) { if (!key.Contains(PStr.b().a(basePath).a("/ui/panel").e()) && !key.Contains(PStr.b().a(basePath).a("/ui/cell").e()) && !key.Contains(PStr.b().a(basePath).a("/ui/other").e())) { MapEx.set(needUpgradeVerver, key, false); } } } keysList.Clear(); keysList = null; if (needUpgradeVerver.Count > 0) { if (progressCallback != null) { Utl.doCallback(progressCallback, needUpgradeVerver.Count, 0); } keysList = MapEx.keys2List(needUpgradeVerver); count = keysList.Count; key = ""; for (int i = 0; i < count; i++) { key = keysList[i] as string; getVerinfor(key, MapEx.getString(serververVer, key)); } keysList.Clear(); keysList = null; } else { loadPriorityVer(); loadOtherResVer(true); } }
static void checkPriority() { localPriorityVer = new Hashtable(); progress = 0; needUpgradeVerver.Clear(); needUpgradePrioritis.Clear(); string ver = null; ArrayList keysList = MapEx.keys2List(serverPriorityVer); string key = null; int count = keysList.Count; for (int i = 0; i < count; i++) { key = keysList[i] as string; ver = MapEx.getString(localPriorityVer, key); //实际上这个时间localverVer是空的,因此其实就是取得所有优先资源,但是因为了加了版本号,所以可以使用cdn,或者本地缓存什么的 if (ver == null || ver != MapEx.getString(serverPriorityVer, key)) { MapEx.set(needUpgradeVerver, key, false); needUpgradePrioritis.Enqueue(key); } } keysList.Clear(); keysList = null; if (needUpgradePrioritis.Count > 0) { haveUpgrade = true; CLVerManager.self.haveUpgrade = true; if (progressCallback != null) { Utl.doCallback(progressCallback, needUpgradeVerver.Count, 0); } getPriorityFiles(needUpgradePrioritis.Dequeue() as string); } else { //--同步总的版本管理文件到本地 //MemoryStream ms = new MemoryStream(); //B2OutputStream.writeMap(ms, localverVer); //string vpath = PStr.b().a(CLPathCfg.persistentDataPath).a("/").a(mVerverPath).e(); //FileEx.CreateDirectory(Path.GetDirectoryName(vpath)); //File.WriteAllBytes(vpath, ms.ToArray()); loadOtherResVer(true); } }