Exemplo n.º 1
0
        public void TestStreamCopy()
        {
            var inNetworkBuffer   = new NetworkBuffer();
            var copyNetworkBuffer = new NetworkBuffer();

            byte initialValue1 = 56;
            byte initialValue2 = 24;

            inNetworkBuffer.WriteByte(initialValue1);
            inNetworkBuffer.WriteByte(initialValue2);

            byte copyValue1 = 27;
            byte copyValue2 = 100;

            copyNetworkBuffer.WriteByte(copyValue1);
            copyNetworkBuffer.WriteByte(copyValue2);

            inNetworkBuffer.CopyFrom(copyNetworkBuffer, 2);

            var outNetworkBuffer = new NetworkBuffer(inNetworkBuffer.ToArray());

            Assert.That(outNetworkBuffer.ReadByte(), Is.EqualTo(initialValue1));
            Assert.That(outNetworkBuffer.ReadByte(), Is.EqualTo(initialValue2));
            Assert.That(outNetworkBuffer.ReadByte(), Is.EqualTo(copyValue1));
            Assert.That(outNetworkBuffer.ReadByte(), Is.EqualTo(copyValue2));
        }
Exemplo n.º 2
0
        public void TestToArray()
        {
            var inNetworkBuffer = new NetworkBuffer();

            inNetworkBuffer.WriteByte(5);
            inNetworkBuffer.WriteByte(6);
            Assert.That(inNetworkBuffer.ToArray().Length, Is.EqualTo(2));
        }
Exemplo n.º 3
0
        public void TestSetLength2()
        {
            var networkBuffer = new NetworkBuffer(4);

            networkBuffer.WriteByte(1);
            networkBuffer.WriteByte(1);
            networkBuffer.WriteByte(1);
            networkBuffer.WriteByte(1);

            networkBuffer.SetLength(0);

            // position should never go beyond length
            Assert.That(networkBuffer.Position, Is.EqualTo(0));
        }
Exemplo n.º 4
0
        public void TestLength()
        {
            var inNetworkBuffer = new NetworkBuffer(4);

            Assert.That(inNetworkBuffer.Length, Is.EqualTo(0));
            inNetworkBuffer.WriteByte(1);
            Assert.That(inNetworkBuffer.Length, Is.EqualTo(1));
            inNetworkBuffer.WriteByte(2);
            Assert.That(inNetworkBuffer.Length, Is.EqualTo(2));
            inNetworkBuffer.WriteByte(3);
            Assert.That(inNetworkBuffer.Length, Is.EqualTo(3));
            inNetworkBuffer.WriteByte(4);
            Assert.That(inNetworkBuffer.Length, Is.EqualTo(4));
        }
Exemplo n.º 5
0
        public void TestCapacityGrowth()
        {
            var inNetworkBuffer = new NetworkBuffer(4);

            Assert.That(inNetworkBuffer.Capacity, Is.EqualTo(4));

            inNetworkBuffer.WriteByte(1);
            inNetworkBuffer.WriteByte(2);
            inNetworkBuffer.WriteByte(3);
            inNetworkBuffer.WriteByte(4);
            inNetworkBuffer.WriteByte(5);

            // buffer should grow and the reported length
            // should not waste any space
            // note MemoryStream makes a distinction between Length and Capacity
            Assert.That(inNetworkBuffer.Length, Is.EqualTo(5));
            Assert.That(inNetworkBuffer.Capacity, Is.GreaterThanOrEqualTo(5));
        }
Exemplo n.º 6
0
        public void TestInOutBytes()
        {
            var  buffer     = new byte[100];
            byte someNumber = 0xff;

            var outNetworkBuffer = new NetworkBuffer(buffer);

            outNetworkBuffer.WriteByte(someNumber);

            var inNetworkBuffer = new NetworkBuffer(buffer);

            Assert.That(inNetworkBuffer.ReadByte(), Is.EqualTo(someNumber));
        }
Exemplo n.º 7
0
        public override void Send(IConnection connection, byte[] buffer, int offset, int size)
        {
            int length = size + lengthAdjustment;

            if (lengthIncludesLengthFieldLength)
            {
                length += lengthFieldLength;
            }

            if (length < 0)
            {
                throw new ArgumentException(
                          "Adjusted frame length (" + length + ") is less than zero");
            }
            NetworkBuffer outBuffer = new NetworkBuffer(size + lengthFieldLength, true);

            switch (lengthFieldLength)
            {
            case 1:
                if (length >= 256)
                {
                    throw new ArgumentException(
                              "length does not fit into a byte: " + length);
                }
                outBuffer.WriteByte((byte)length);
                break;

            case 2:
                if (length >= 65536)
                {
                    throw new ArgumentException(
                              "length does not fit into a short integer: " + length);
                }
                outBuffer.WriteInt16((short)length);
                break;

            case 4:
                outBuffer.WriteInt32(length);
                break;

            default:
                throw new ArgumentException("should not reach here");
            }
            outBuffer.WriteBytes(buffer, offset, size);

            sendBuffDown(connection, outBuffer.GetBuffer(), outBuffer.ReadOffset, outBuffer.ReadableBytes);
        }