private async Task _sendMessage(SMPPMessage message) { using (await _sendLock.Enter()) { if (!_isRunning) { throw new SMPPException("Connection is down."); } PduWriter writer = new PduWriter(); if ((message.Command & CommandSet.Response) == 0) { lock (this) { message.Sequence = _sequence; _sequence = (_sequence < 1000000000) ? _sequence + 1 : 1; } } writer.WriteMessage(message); byte[] pduData = writer.PduData(); #if DEBUG Debug.WriteLine("SMPPConnection: SendMessage size=" + pduData.Length + " id=" + message.Command + " status=" + message.Status + " seq=" + message.Sequence); #endif try { await _stream.WriteAsync(pduData, 0, pduData.Length); } catch (Exception err) { throw _setFailed(new SMPPException("Send data to SMPP server failed", err)); } } }
internal override void Serialize(PduWriter writer) { writer.WriteCStringAscii(SystemId, 1, 15); writer.WriteCStringAscii(Password, 0, 8); writer.WriteCStringAscii(SystemType, 0, 12); writer.WriteByte((byte)InterfaceVersion); writer.WriteByte((byte)AddrTon); writer.WriteByte((byte)AddrNpi); writer.WriteCStringAscii(AddressRange, 0, 40); }
internal override void Serialize(PduWriter writer) { writer.WriteCStringAscii(ServiceType, 0, 5); writer.WriteByte((byte)SourceTon); writer.WriteByte((byte)SourceNpi); writer.WriteCStringAscii(SourceAddr, 0, 20); writer.WriteByte((byte)DestTon); writer.WriteByte((byte)DestNpi); writer.WriteCStringAscii(DestAddr, 0, 20); writer.WriteByte((byte)EsmClass); writer.WriteByte((byte)ProtocolId); writer.WriteByte((byte)PriorityFlag); writer.WriteCStringAscii(ScheduleDeliveryTime, 0, 16); writer.WriteCStringAscii(ValidityPeriod, 0, 16); writer.WriteByte((byte)RegisteredDelivery); writer.WriteByte(ReplaceIfPresent); writer.WriteByte((byte)DataCoding); writer.WriteByte(DefaultMessageId); writer.WriteByte((byte)ShortMessage.Length); writer.WriteBytes(ShortMessage); }
internal virtual void Serialize(PduWriter writer) { throw new SMPPException("Can't send message " + Command + "."); }
internal override void Serialize(PduWriter writer) { }
internal override void Serialize(PduWriter writer) { writer.WriteCStringAscii(MessageId, 0, 15); }