Exemple #1
0
        /// <summary>
        /// 逻辑更新
        /// </summary>
        /// <returns></returns>
        public virtual void Update()
        {
            if (this.m_cReceiveQueue.Count > 0)
            {
                lock (this.m_cReceiveQueue)
                {
                    Queue <StreamBuffer> .Enumerator iter = m_cReceiveQueue.GetEnumerator();
                    while (iter.MoveNext())
                    {
                        m_cDispatchQueue.Enqueue(iter.Current);
                    }
                    this.m_cReceiveQueue.Clear();
                }
            }

            for (int i = 0; i < 16; i++)
            {
                if (this.m_cDispatchQueue.Count > 0)
                {
                    StreamBuffer sb = this.m_cDispatchQueue.Dequeue();
                    m_sessionListener.OnPktReceive(sb);
                }
                else
                {
                    break;
                }
            }

            m_sessionListener.OnDispatch();
        }