private CloseDvcPdu ExpectDVCClosePDU(TimeSpan timeout, uint channelId, DynamicVC_TransportType transportType)
{
DateTime endTime = DateTime.Now + timeout;
while (DateTime.Now < endTime)
{
if (unprocessedDVCPacketBuffer.Count > 0)
{
lock (unprocessedDVCPacketBuffer)
{
if (unprocessedDVCPacketBuffer.Count > 0)
{
for (int i = 0; i < unprocessedDVCPacketBuffer.Count; i++)
{
if (transportType == unprocessedDVCPacketBuffer[i].TransportType
&& unprocessedDVCPacketBuffer[i].PDU is CloseDvcPdu
&& (unprocessedDVCPacketBuffer[i].PDU as CloseDvcPdu).ChannelId == channelId)
{
CloseDvcPdu pdu = unprocessedDVCPacketBuffer[i].PDU as CloseDvcPdu;
unprocessedDVCPacketBuffer.RemoveAt(i);
return pdu;
}
}
}
}
}
Thread.Sleep(this.waitInterval);
}
return null;
}