Example #1
0
        public void Receives_Bind_Transmitter_Resp()
        {
            var e = new ManualResetEvent(false);
            var data = new byte[] {
                0x00, 0x00, 0x00, 0x17, // length
                0x80, 0x00, 0x00, 0x02, // command
                0x00, 0x00, 0x00, 0x00, // status
                0x00, 0x00, 0x00, 0x20, // sequence
                0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x00 // system ID
            };

            var expectedPdu = new BindTransmitterResponse(SmppStatus.Ok, 32, "System");

            PduReceiver receiver = null;
            var handler = new Mock<IPduReceivedHandler>();
            handler.Setup(h => h.HandlePdu(It.IsAny<BindTransmitterResponse>()))
                .Callback(() => e.Set());

            receiver = new PduReceiver(
                new MemoryStream(data),
                handler.Object);

            receiver.Start();
            e.WaitOne();
            handler.Verify(h => h.HandlePdu(expectedPdu));
            receiver.Stop();
        }
        public void Serializes_Pdu()
        {
            var expectedResult = new byte[] {
                0x00, 0x00, 0x00, 0x17, // length
                0x80, 0x00, 0x00, 0x02, // command
                0x00, 0x00, 0x00, 0x00, // status
                0x00, 0x00, 0x00, 0x20, // sequence
                0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x00 // system ID
            };
            var pdu = new BindTransmitterResponse(
                SmppStatus.Ok,
                32,
                "System");
            var serializer = new BindTransmitterResponseSerializer();

            var result = serializer.Serialize(pdu);

            CollectionAssert.AreEqual(expectedResult, result);
        }
Example #3
0
        void IPduReceivedHandler.HandlePdu(BindTransmitterResponse pdu)
        {
            var task = _taskRegistry.Unregister(pdu.SequenceNumber);
            if (task == null)
                return;

            if (pdu.Status != SmppStatus.Ok)
            {
                var bindException = new Exception("The bind operation failed with error code: " + pdu.Status);
                task.SetException(bindException);
            }
            else
            {
                _state = SessionState.BoundTransmitter;
                task.SetResult(new BindResult(pdu.SystemId));
            }
        }