public void Slice() { CheckListener(); lock (m_Queue.SyncRoot) { while (m_Queue.Count > 0) { NetState ns = (NetState)m_Queue.Dequeue(); if (ns.Running) { if (HandleReceive(ns) && ns.Running) { ns.Continue(); } } } while (m_Throttled.Count > 0) { m_Queue.Enqueue(m_Throttled.Dequeue()); } } }
private void HandlePending() { lock ( m_PendingQueue ) { while (m_PendingQueue.Count > 0) { NetState ns = m_PendingQueue.Dequeue(); if (ns.Running) { ByteQueue buffer = ns.Buffer; bool throttle = false; if (buffer != null && buffer.Length > 0) { lock ( buffer ) { InvokeReceived(ns, buffer, out throttle); } } if (ns.Running) { if (throttle) { m_ThrottledQueue.Enqueue(ns); } else { ns.Continue(); } } } } while (m_ThrottledQueue.Count > 0) { m_PendingQueue.Enqueue(m_ThrottledQueue.Dequeue()); } } }