示例#1
0
        public override void StopKeepAlive()
        {
            if (_interval != null)
            {
                Coroutines.ClearInterval(_interval);
                _interval     = null;
                _lastActivity = -1;
            }

            List <Request> backup = new List <Request>();

            if (_current != null)
            {
                // mark as suspend & try re-queue
                EB.Debug.LogWarning("StopKeepAlive: Suspend current request {0}", _current.url);
                _current.suspend = true;
                if (_current.suspendMethod != Request.eSuspendMethod.Retry)
                {
                    backup.Add(_current);
                }
            }

            if (_queue.Count > 0)
            {
                backup.AddRange(_queue);
                _queue.Clear();
            }

            for (int i = 0; i < backup.Count; ++i)
            {
                if (backup[i].suspendMethod == Request.eSuspendMethod.Retry)
                {
                    EB.Debug.LogWarning("StopKeepAlive: Backup request {0}", backup[i].url);
                    _backup.Enqueue(backup[i]);
                }
                else if (backup[i].suspendMethod == Request.eSuspendMethod.Finish)
                {
                    EB.Debug.LogWarning("StopKeepAlive: Finish request {0}", backup[i].url);
                    backup[i].suspend = true;
                    if (SuspendHandler != null)
                    {
                        Response res = new Response(backup[i]);
                        SuspendHandler(res);
                    }
                }
                else if (backup[i].suspendMethod == Request.eSuspendMethod.Break)
                {
                    EB.Debug.LogWarning("StopKeepAlive: Break request {0}", backup[i].url);
                }
            }

            EB.Net.WebRequest.CleanConnections();
        }