public static Remove ( |
||
first | ||
last | ||
delivery | ||
return | void |
public static void Remove(ref Delivery first, ref Delivery last, Delivery delivery)
{
if (delivery == first)
{
first = delivery.Next;
if (first == null)
{
last = null;
}
else
{
first.Previous = null;
}
}
else if (delivery == last)
{
last = delivery.Previous;
last.Next = null;
}
else if (delivery.Previous != null && delivery.Next != null)
{
delivery.Previous.Next = delivery.Next;
delivery.Next.Previous = delivery.Previous;
}
delivery.Previous = null;
delivery.Next = null;
}
public void OnLinkClosed(AmqpLink link) { int settledCount = 0; lock (this.syncRoot) { Delivery current = this.firstUnsettled; while (current != null) { Delivery delivery = current; current = current.Next; if (delivery.Link == link) { Delivery.Remove(ref this.firstUnsettled, ref this.lastUnsettled, delivery); settledCount++; } } } if (settledCount > 0) { this.OnWindowMoved(settledCount); } }