예제 #1
0
        public void Should_be_sequential()
        {
            var id   = ByteConverter.GetInt(_tokenManager.AcquireToken());
            var last = id;

            for (var i = 0; i < 100; i++)
            {
                id = ByteConverter.GetInt(_tokenManager.AcquireToken());
                Assert.AreEqual(last + 1, id);
                last = id;
            }
        }
예제 #2
0
        public override void Send(Message message)
        {
            var blockInfo   = NegotiateBlockSize(message);
            var isBlockwise = message.Payload.Length > BlockOption.DecodeSzx(blockInfo.Szx);

            if (isBlockwise)
            {
                if (!message.HasToken)
                {
                    message.Token = _tokenManager.AcquireToken();
                }

                var block        = message.GetBlock(blockInfo);
                var optionNumber = message is Request ? OptionNumber.Block1 : OptionNumber.Block2;

                if (block.GetBlockOption(optionNumber).M > 0)
                {
                    _incomplete.Add(message.GetTransactionKey(), message);
                }

                SendMessageOverLowerLayer(block);
            }
            else
            {
                SendMessageOverLowerLayer(message);
            }
        }