using System.Collections; using System.Collections.Generic; using MonoTorrent.BEncoding; namespace MonoTorrent { public class RawTrackerTiers : IList { BEncodedList Tiers { get; set; } public RawTrackerTiers () : this (new BEncodedList ()) { } public RawTrackerTiers (BEncodedList tiers) { Tiers = tiers; } public int IndexOf (RawTrackerTier item) { if (item != null) { for (int i = 0; i < Tiers.Count; i++) if (item.Tier == Tiers [i]) return i; } return -1; } public void Insert (int index, RawTrackerTier item) { Tiers.Insert (index, item.Tier); } public void RemoveAt (int index) { Tiers.RemoveAt (index); } public RawTrackerTier this[int index] { get { return new RawTrackerTier ((BEncodedList) Tiers [index]); } set { Tiers [index] = value.Tier; } } public void Add (RawTrackerTier item) { Tiers.Add (item.Tier); } public void AddRange (IEnumerable tiers) { foreach (var v in tiers) Add (v); } public void Clear () { Tiers.Clear (); } public bool Contains (RawTrackerTier item) { return IndexOf (item) != -1; } public void CopyTo (RawTrackerTier[] array, int arrayIndex) { foreach (var v in this) array [arrayIndex ++] = v; } public bool Remove (RawTrackerTier item) { int index = IndexOf (item); if (index != -1) RemoveAt (index); return index != -1; } public int Count { get { return Tiers.Count; } } public bool IsReadOnly { get { return Tiers.IsReadOnly; } } public IEnumerator GetEnumerator () { foreach (var v in Tiers) yield return new RawTrackerTier ((BEncodedList) v); } IEnumerator IEnumerable.GetEnumerator () { return GetEnumerator (); } } }