00001 using System; 00002 using System.Collections; 00003 00004 namespace GPRSWeb.SmartDeviceClient.Common 00005 { 00009 public class Queue : ICollection, IEnumerable, ICloneable 00010 { 00011 00012 private ArrayList myList; 00013 00014 public Queue() { 00015 myList = new ArrayList(); 00016 } 00017 00018 public virtual void Enqueue(object o) { 00019 myList.Add(o); 00020 } 00021 00022 public void Clear() { 00023 myList.Clear(); 00024 } 00025 public virtual object Dequeue() { 00026 object result = myList[0]; 00027 myList.RemoveAt(0); 00028 return result; 00029 } 00030 00031 public object SyncRoot { 00032 get { return myList.SyncRoot; } 00033 } 00034 00035 public bool IsSynchronized { 00036 get { return myList.IsSynchronized; } 00037 } 00038 00039 public void CopyTo(Array array, int index) { 00040 if (array == null) { throw new ArgumentNullException("array"); } 00041 else if (index < 0) { throw new ArgumentOutOfRangeException("Index should not be less than zero");} 00042 else if (array.Rank != 1 || index >= array.Length || myList.Count > (array.Length - index)) { throw new ArgumentException(); } 00043 else { 00044 for (int i = index, j = 0; i < myList.Count; i++, j++) { 00045 array.SetValue(myList[j], i); 00046 } 00047 } 00048 } 00049 00050 public int Count { 00051 get { return myList.Count; } 00052 } 00053 00054 public IEnumerator GetEnumerator() { 00055 return myList.GetEnumerator(); 00056 } 00057 00058 public object Clone() { 00059 Queue result = new Queue(); 00060 result.myList = (ArrayList)myList.Clone(); 00061 return result; 00062 } 00063 00064 } 00065 }