Beispiel #1
0
        public void ShouldAssembleFourPartMessage()
        {
            A.CallTo(() => header.Flags).ReturnsNextFromSequence <byte>(FrameDescriptor.BEGIN_FRAG_FLAG, 0, 0, FrameDescriptor.END_FRAG_FLAG, FrameDescriptor.END_FRAG_FLAG);

            var       srcBuffer = new UnsafeBuffer(new byte[1024]);
            const int offset    = 0;
            var       length    = srcBuffer.Capacity / 4;

            for (var i = 0; i < 4; i++)
            {
                srcBuffer.SetMemory(i * length, length, (byte)(65 + i));
            }

            adapter.OnFragment(srcBuffer, offset, length, header);
            adapter.OnFragment(srcBuffer, offset + length, length, header);
            adapter.OnFragment(srcBuffer, offset + (length * 2), length, header);
            adapter.OnFragment(srcBuffer, offset + (length * 3), length, header);


            Func <UnsafeBuffer, bool> bufferAssertion = capturedBuffer =>
            {
                for (var i = 0; i < srcBuffer.Capacity; i++)
                {
                    if (capturedBuffer.GetByte(i) != srcBuffer.GetByte(i))
                    {
                        return(false);
                    }
                }
                return(true);
            };

            Func <Header, bool> headerAssertion = capturedHeader => capturedHeader.SessionId == SESSION_ID &&
                                                  capturedHeader.Flags == FrameDescriptor.END_FRAG_FLAG;

            A.CallTo(() => delegateFragmentHandler(
                         A <UnsafeBuffer> .That.Matches(bufferAssertion, "buffer"),
                         offset,
                         length * 4,
                         A <Header> .That.Matches(headerAssertion, "header")))
            .MustHaveHappened(Repeated.Exactly.Once);
        }
Beispiel #2
0
        public void ShouldAssembleTwoPartMessage()
        {
            A.CallTo(() => header.Flags).ReturnsNextFromSequence(FrameDescriptor.BEGIN_FRAG_FLAG, FrameDescriptor.END_FRAG_FLAG, FrameDescriptor.END_FRAG_FLAG);
            // Need to add this twice because FakeItEasy doesn't fall back to the implementation

            var       srcBuffer = new UnsafeBuffer(new byte[1024]);
            const int offset    = 0;
            var       length    = srcBuffer.Capacity / 2;

            srcBuffer.SetMemory(0, length, 65);
            srcBuffer.SetMemory(length, length, 66);

            adapter.OnFragment(srcBuffer, offset, length, header);
            adapter.OnFragment(srcBuffer, length, length, header);

            Func <UnsafeBuffer, bool> bufferAssertion = capturedBuffer =>
            {
                for (var i = 0; i < srcBuffer.Capacity; i++)
                {
                    if (capturedBuffer.GetByte(i) != srcBuffer.GetByte(i))
                    {
                        return(false);
                    }
                }
                return(true);
            };

            Func <Header, bool> headerAssertion = capturedHeader => capturedHeader.SessionId == SESSION_ID &&
                                                  capturedHeader.Flags == FrameDescriptor.END_FRAG_FLAG;

            A.CallTo(() => delegateFragmentHandler(
                         A <UnsafeBuffer> .That.Matches(bufferAssertion, "buffer"),
                         offset,
                         length * 2,
                         A <Header> .That.Matches(headerAssertion, "header")))
            .MustHaveHappened(Repeated.Exactly.Once);
        }
Beispiel #3
0
 /// <summary>
 /// Get the value of the flags field.
 /// </summary>
 /// <returns> the value of the header flags field. </returns>
 /// <seealso cref="DataHeaderFlyweight"></seealso>
 public byte Flags()
 {
     return(_buffer.GetByte(HeaderFlyweight.FLAGS_FIELD_OFFSET));
 }
Beispiel #4
0
 /// <summary>
 /// Does the data frame in the packet have the EOS flag set?
 /// </summary>
 /// <param name="packet"> containing the data frame. </param>
 /// <returns> true if the EOS flag is set otherwise false. </returns>
 public static bool IsEndOfStream(UnsafeBuffer packet)
 {
     return(BEGIN_END_AND_EOS_FLAGS == (packet.GetByte(FLAGS_FIELD_OFFSET) & 0xFF));
 }