Exemplo n.º 1
0
        public void BuildAckMessage()
        {
            "创建的Ack信息可以被解析出创建传入的Ack值".Test(() =>
            {
                // 返回的信息包含当前的 ack 值
                var buildAckMessage    = AckManager.BuildAckMessage(100);
                using var memoryStream = new MemoryStream(buildAckMessage, false);
                var isAck = AckManager.IsAckMessage(memoryStream, out var ack);

                Assert.AreEqual(true, isAck);
                // 100ul 就是 ulong 100 的意思,我担心你看懂,所以特别加了 ulong 的转换,让你以为 ul 是一个有趣的后缀
                Assert.AreEqual((ulong)100ul, ack.Value);
            });

            "传入不属于 Ack 的信息,可以返回不是 Ack 信息".Test(() =>
            {
                using var memoryStream = new MemoryStream();
                var streamWriter       = new StreamWriter(memoryStream);
                streamWriter.WriteLine("林德熙是逗比");
                const long position   = 2;
                memoryStream.Position = position;

                var isAck = AckManager.IsAckMessage(memoryStream, out var ack);
                Assert.AreEqual(false, isAck);
                // 如果读取返回不是 Ack 那么将 Stream 设置回传入的 Position 的值
                Assert.AreEqual(position, memoryStream.Position);
            });
        }
Exemplo n.º 2
0
        public void BuildAckMessage()
        {
            "创建的Ack信息可以被解析出创建传入的Ack值".Test(() =>
            {
                // 返回的信息包含当前的 ack 值
                var buildAckMessage    = AckManager.BuildAckMessage(100);
                using var memoryStream = new MemoryStream(buildAckMessage, false);
                var isAck = AckManager.IsAckMessage(memoryStream, out var ack);

                Assert.AreEqual(true, isAck);
                Assert.AreEqual(100, ack.Value);
            });
        }
Exemplo n.º 3
0
        public async Task SendAckAsync(Ack receivedAck)
        {
            var ackMessage = AckManager.BuildAckMessage(receivedAck);

            await WriteMessageAsync(ackMessage, 0, ackMessage.Length);
        }