private void ProcessDataPdu(DataDvcBasePdu pdu)
{
if (pdu is DataFirstDvcPdu)
{
dataFragmentManager = new DataFragmentManager();
DataFirstDvcPdu first = (DataFirstDvcPdu)pdu;
dataFragmentManager.AddFirstData(first.Length, first.Data);
}
else if (pdu is DataDvcPdu)
{
if (dataFragmentManager == null)
{
// Single data PDU which is not fragmented.
if (this.Received != null)
{
this.Received(pdu.Data, this.ChannelId);
}
return;
}
else
{
// Received a fragment.
dataFragmentManager.AppendData(pdu.Data);
}
}
if (dataFragmentManager.Completed)
{
if (this.Received != null)
{
this.Received(dataFragmentManager.Data, this.ChannelId);
}
dataFragmentManager = null;
}
}