private StackPacket SwitchDecodeMcsDomainPDU(byte[] data)
{
// Skip TpktHeader and X224Data
int tempIndex = ConstValue.TPKT_HEADER_AND_X224_DATA_LENGTH;
// Decode Domain MCS PDU
DomainMCSPDU domainPdu = ParseMcsDomainPdu(data, ref tempIndex);
// Switch decoders by pdu element name
StackPacket pdu = null;
switch (domainPdu.ElemName)
{
// Channel Join Confirm PDU
case ConstValue.MCS_DOMAIN_PDU_NAME_CHANNEL_JOIN_CONFIRM:
pdu = DecodeMcsChannelJoinConfirmPDU(data);
break;
// Send Data Indication PDU
case ConstValue.MCS_DOMAIN_PDU_NAME_SEND_DATA_INDICATION:
pdu = DecodeMcsSendDataIndicationPDU(data, domainPdu);
break;
// Attach User Confirm PDU
case ConstValue.MCS_DOMAIN_PDU_NAME_ATTACH_USER_CONFIRM:
pdu = DecodeMcsAttachUserConfirmPDU(data);
break;
// Disconnect Provider Ultimatum PDU
case ConstValue.MCS_DOMAIN_PDU_NAME_DISCONNECT_PROVIDER_ULTIMATUM:
pdu = DecodeDisconnectProviderUltimatumPDU(data);
break;
default:
throw new FormatException(ConstValue.ERROR_MESSAGE_ENUM_UNRECOGNIZED);
}
return pdu;
}