void OnFlow(Flow flow)
{
lock (this.ThisLock)
{
this.outgoingWindow = (uint)((flow.NextIncomingId + flow.IncomingWindow) - this.nextOutgoingId);
if (this.outgoingWindow > 0)
{
Delivery delivery = (Delivery)this.outgoingList.First;
while (delivery != null)
{
if (delivery.Buffer != null && delivery.Buffer.Length > 0)
{
break;
}
delivery = (Delivery)delivery.Next;
}
if (delivery != null)
{
this.WriteDelivery(delivery);
}
}
if (this.outgoingWindow == 0)
{
return;
}
}
if (flow.HasHandle)
{
this.GetLink(flow.Handle).OnFlow(flow);
}
}