Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
            }
        }