Esempio n. 1
0
 public void removeDelegates(string key)
 {
     if (delegateInfro [key] != null)
     {
         NewList list = (delegateInfro[key]) as NewList;
         if (list != null)
         {
             for (int i = 0; i < list.Count; i++)
             {
                 ObjPool.listPool.returnObject(list[i] as NewList);
             }
             list.Clear();
             ObjPool.listPool.returnObject(list);
             list = null;
         }
     }
     delegateInfro.Remove(key);
 }
Esempio n. 2
0
 public static void uncheckWWWTimeout(UnityWebRequest www, string url)
 {
     try
     {
         if (www != null && !ReferenceEquals(www, null))
         {
             wwwMap4Get.Remove(url);
             NewList list = wwwMap4Check[www] as NewList;
             if (list != null)
             {
                 list.Clear();
                 ObjPool.listPool.returnObject(list);
             }
             wwwMap4Check.Remove(www);
         }
     }
     catch (System.Exception e)
     {
         Debug.LogError(e);
     }
 }
Esempio n. 3
0
 public object[] call(LuaFunction func, params object[] _params)
 {
     if (func == null)
     {
         return(null);
     }
     if (isClassLua)
     {
         NewList list = ObjPool.listPool.borrowObject();
         list.Clear();
         list.Add(luaTable);
         list.AddRange(_params);
         object[] ret = func.Call(list.ToArray(), null);
         ObjPool.listPool.returnObject(list);
         return(ret);
     }
     else
     {
         return(func.Call(_params));
     }
 }
Esempio n. 4
0
        public static void checkWWWTimeout()
        {
            NewList keys = ObjPool.listPool.borrowObject();

            keys.AddRange(wwwMap4Check.Keys);
            UnityWebRequest www  = null;
            NewList         list = null;

            for (int i = 0; i < keys.Count; i++)
            {
                www = keys[i] as UnityWebRequest;
                if (www != null)
                {
                    list = wwwMap4Check[www] as NewList;
                    if (list != null)
                    {
                        doCheckWWWTimeout(www, list);
                    }
                }
            }
            keys.Clear();
            ObjPool.listPool.returnObject(keys);
            keys = null;
        }
Esempio n. 5
0
        public static void doCheckWWWTimeout(UnityWebRequest www, NewList list)
        {
            //yield return new WaitForSeconds(checkProgressSec);
            string      url                = list[0] as string;
            object      timeoutCallback    = list[1];
            float       checkProgressSec   = (float)(list[2]);
            object      orgs               = list[3];
            float       oldProgress        = (float)(list[4]);
            float       oldSize            = (float)(list[5]);
            float       lastCheckTime      = (float)(list[6]);
            int         maxFailTimes       = (int)(list[7]);
            int         failedTimes        = (int)(list[8]);
            RedCallback redrectioncallback = list[9] as RedCallback;

            if (Time.realtimeSinceStartup - lastCheckTime < 0)
            {
                return;
            }
            try
            {
                if (www != null)
                {
                    if (www.isDone)
                    {
                        wwwMap4Check.Remove(www);
                        list.Clear();
                        ObjPool.listPool.returnObject(list);
                    }
                    else
                    {
                        float curProgress = 0;
                        float curSize     = 0;
                        if (www.method == "PUT")
                        {
                            curProgress = www.uploadProgress;
                            if (www.uploadHandler != null && www.uploadHandler.data != null)
                            {
                                curSize = www.uploadHandler.data.Length;
                            }
                        }
                        else
                        {
                            curProgress = www.downloadProgress;
                            if (www.downloadHandler != null && www.downloadHandler.data != null)
                            {
                                curSize = www.downloadHandler.data.Length;
                            }
                        }

                        if (Mathf.Abs(curProgress - oldProgress) < 0.0001f &&
                            Mathf.Abs(curSize - oldSize) < 0.0001f)
                        {
                            //说明没有变化,可能网络不给力
                            if (maxFailTimes > failedTimes + 1)
                            {
                                if (redrectioncallback != null)
                                {
                                    redrectioncallback(url);
                                }
                            }
                            else
                            {
                                Coroutine corout = wwwMap4Get[url] as Coroutine;
                                if (corout != null)
                                {
                                    self.StopCoroutine(corout);
                                }
                                wwwMap4Get.Remove(url);
                                wwwMapUrl.Remove(url);

                                list.Clear();
                                ObjPool.listPool.returnObject(list);
                                wwwMap4Check.Remove(www);

                                www.Abort();
                                www.Dispose();
                                www = null;
                                Debug.LogError("www time out! url==" + url);
                                Utl.doCallback(timeoutCallback, null, orgs);
                            }
                        }
                        else
                        {
                            //Coroutine cor = self.StartCoroutine(doCheckWWWTimeout(www, url, checkProgressSec, timeoutCallback, curProgress, orgs));
                            list[4]           = curProgress;
                            list[5]           = curSize;
                            list[6]           = Time.realtimeSinceStartup + checkProgressSec;
                            wwwMap4Check[www] = list;
                        }
                    }
                }
            }
            catch (System.Exception e)
            {
                Debug.LogError(e);
            }
        }