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); }
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); }
/// <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)); }
/// <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)); }