Radarr/src/MonoTorrent/RawTrackerTiers.cs

110 lines
2.4 KiB
C#
Raw Normal View History

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
{
get; set;
}
2019-12-22 22:08:53 +00:00
public RawTrackerTiers()
: this(new BEncodedList())
{
}
2019-12-22 22:08:53 +00:00
public RawTrackerTiers(BEncodedList tiers)
{
Tiers = tiers;
}
2019-12-22 22:08:53 +00:00
public int IndexOf(RawTrackerTier item)
{
2019-12-22 22:08:53 +00:00
if (item != null)
{
for (int i = 0; i < Tiers.Count; i++)
2019-12-22 22:08:53 +00:00
if (item.Tier == Tiers[i])
return i;
}
return -1;
}
2019-12-22 22:08:53 +00:00
public void Insert(int index, RawTrackerTier item)
{
2019-12-22 22:08:53 +00:00
Tiers.Insert(index, item.Tier);
}
2019-12-22 22:08:53 +00:00
public void RemoveAt(int index)
{
2019-12-22 22:08:53 +00:00
Tiers.RemoveAt(index);
}
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; }
}
2019-12-22 22:08:53 +00:00
public void Add(RawTrackerTier item)
{
2019-12-22 22:08:53 +00:00
Tiers.Add(item.Tier);
}
2019-12-22 22:08:53 +00:00
public void AddRange(IEnumerable<RawTrackerTier> tiers)
{
foreach (var v in tiers)
2019-12-22 22:08:53 +00:00
Add(v);
}
2019-12-22 22:08:53 +00:00
public void Clear()
{
2019-12-22 22:08:53 +00:00
Tiers.Clear();
}
2019-12-22 22:08:53 +00:00
public bool Contains(RawTrackerTier item)
{
2019-12-22 22:08:53 +00:00
return IndexOf(item) != -1;
}
2019-12-22 22:08:53 +00:00
public void CopyTo(RawTrackerTier[] array, int arrayIndex)
{
foreach (var v in this)
2019-12-22 22:08:53 +00:00
array[arrayIndex++] = v;
}
2019-12-22 22:08:53 +00:00
public bool Remove(RawTrackerTier item)
{
2019-12-22 22:08:53 +00:00
int index = IndexOf(item);
if (index != -1)
2019-12-22 22:08:53 +00:00
RemoveAt(index);
return index != -1;
}
2019-12-22 22:08:53 +00:00
public int Count
{
get { return Tiers.Count; }
}
2019-12-22 22:08:53 +00:00
public bool IsReadOnly
{
get { return Tiers.IsReadOnly; }
}
2019-12-22 22:08:53 +00:00
public IEnumerator<RawTrackerTier> GetEnumerator()
{
foreach (var v in Tiers)
2019-12-22 22:08:53 +00:00
yield return new RawTrackerTier((BEncodedList)v);
}
2019-12-22 22:08:53 +00:00
IEnumerator IEnumerable.GetEnumerator()
{
2019-12-22 22:08:53 +00:00
return GetEnumerator();
}
}
}