internal SMPPDeliverSm(PduReader reader) : base(reader)
 {
     ServiceType          = reader.ReadCStringAscii();
     SourceTon            = (TonType)reader.ReadByte();
     SourceNpi            = (NpiType)reader.ReadByte();
     SourceAddr           = reader.ReadCStringAscii();
     DestTon              = (TonType)reader.ReadByte();
     DestNpi              = (NpiType)reader.ReadByte();
     DestAddr             = reader.ReadCStringAscii();
     EsmClass             = (EmsClass)reader.ReadByte();
     ProtocolId           = reader.ReadByte();
     PriorityFlag         = (PriorityFlags)reader.ReadByte();
     ScheduleDeliveryTime = reader.ReadCStringAscii();
     ValidityPeriod       = reader.ReadCStringAscii();
     RegisteredDelivery   = (RegisteredDeliveryFlags)reader.ReadByte();
     ReplaceIfPresent     = reader.ReadByte();
     DataCoding           = (DataCodings)reader.ReadByte();
     DefaultMessageId     = reader.ReadByte();
     ShortMessage         = reader.ReadBytes(reader.ReadByte());
     ReadOptional(reader);
 }
 internal SMPPTLV(PduReader reader)
 {
     Tag   = (OptionalTags)(reader.ReadInteger16());
     Value = reader.ReadBytes(reader.ReadInteger16());
 }