using System.Collections.Generic; using libsecondlife; using OpenSim.Region.Environment.Scenes; namespace OpenSim.Region.Environment.Types { public class UpdateQueue { private Queue m_queue; private List m_ids; public int Count { get { return m_queue.Count; } } public UpdateQueue() { m_queue = new Queue(); m_ids = new List(); } public void Enqueue(SceneObjectPart part) { lock (m_ids) { if (!m_ids.Contains(part.UUID)) { m_ids.Add(part.UUID); m_queue.Enqueue(part); } } } public SceneObjectPart Dequeue() { SceneObjectPart part = null; if (m_queue.Count > 0) { part = m_queue.Dequeue(); lock (m_ids) { m_ids.Remove(part.UUID); } } return part; } } }