コード例 #1
0
        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));
                }
            }
        }
コード例 #2
0
 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);
 }
コード例 #3
0
 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);
 }
コード例 #4
0
 internal virtual void            Serialize(PduWriter writer)
 {
     throw new SMPPException("Can't send message " + Command + ".");
 }
コード例 #5
0
 internal override void                Serialize(PduWriter writer)
 {
 }
コード例 #6
0
 internal override void                Serialize(PduWriter writer)
 {
     writer.WriteCStringAscii(MessageId, 0, 15);
 }