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