private void InsertDataFrame(int activeTermId, int termOffset) { DataHeader.TermId(INITIAL_TERM_ID).StreamId(STREAM_ID).SessionId(SESSION_ID).TermOffset(termOffset).FrameLength(DATA.Length + DataHeaderFlyweight.HEADER_LENGTH).HeaderType(HeaderFlyweight.HDR_TYPE_DATA).Flags(DataHeaderFlyweight.BEGIN_AND_END_FLAGS).Version(HeaderFlyweight.CURRENT_VERSION); RcvBuffer.PutBytes(DataHeader.DataOffset(), DATA); var activeIndex = LogBufferDescriptor.IndexByTerm(INITIAL_TERM_ID, activeTermId); TermRebuilder.Insert(TermBuffers[activeIndex], termOffset, RcvBuffer, ALIGNED_FRAME_LENGTH); }
public void ShouldFillAfterAGap() { const int frameLength = 50; int alignedFrameLength = BitUtil.Align(frameLength, FrameDescriptor.FRAME_ALIGNMENT); const int srcOffset = 0; UnsafeBuffer packet = new UnsafeBuffer(new byte[alignedFrameLength]); int termOffset = alignedFrameLength * 2; TermRebuilder.Insert(_termBuffer, termOffset, packet, alignedFrameLength); A.CallTo(() => _termBuffer.PutBytes((alignedFrameLength * 2) + DataHeaderFlyweight.HEADER_LENGTH, packet, srcOffset + DataHeaderFlyweight.HEADER_LENGTH, alignedFrameLength - DataHeaderFlyweight.HEADER_LENGTH)).MustHaveHappened(); }
private void InsertPaddingFrame(int activeTermId, int termOffset) { DataHeader .TermId(INITIAL_TERM_ID) .StreamId(STREAM_ID) .SessionId(SESSION_ID) .FrameLength(TERM_BUFFER_LENGTH - termOffset) .HeaderType(HeaderFlyweight.HDR_TYPE_PAD) .Flags(DataHeaderFlyweight.BEGIN_AND_END_FLAGS) .Version(HeaderFlyweight.CURRENT_VERSION); var activeIndex = LogBufferDescriptor.IndexByTerm(INITIAL_TERM_ID, activeTermId); TermRebuilder.Insert(TermBuffers[activeIndex], termOffset, RcvBuffer, TERM_BUFFER_LENGTH - termOffset); }
public void ShouldInsertLastFrameIntoBuffer() { int frameLength = BitUtil.Align(256, FrameDescriptor.FRAME_ALIGNMENT); const int srcOffset = 0; int tail = TERM_BUFFER_CAPACITY - frameLength; int termOffset = tail; UnsafeBuffer packet = new UnsafeBuffer(new byte[frameLength]); packet.PutShort(FrameDescriptor.TypeOffset(srcOffset), (short)FrameDescriptor.PADDING_FRAME_TYPE); packet.PutInt(srcOffset, frameLength); TermRebuilder.Insert(_termBuffer, termOffset, packet, frameLength); A.CallTo(() => _termBuffer.PutBytes(tail + DataHeaderFlyweight.HEADER_LENGTH, packet, srcOffset + DataHeaderFlyweight.HEADER_LENGTH, frameLength - DataHeaderFlyweight.HEADER_LENGTH)).MustHaveHappened(); }
public void ShouldFillGapButNotMoveTailOrHwm() { const int frameLength = 50; int alignedFrameLength = BitUtil.Align(frameLength, FrameDescriptor.FRAME_ALIGNMENT); const int srcOffset = 0; UnsafeBuffer packet = new UnsafeBuffer(new byte[alignedFrameLength]); int termOffset = alignedFrameLength * 2; A.CallTo(() => _termBuffer.GetInt(0)).Returns(frameLength); A.CallTo(() => _termBuffer.GetInt(alignedFrameLength)).Returns(0); TermRebuilder.Insert(_termBuffer, termOffset, packet, alignedFrameLength); A.CallTo(() => (_termBuffer).PutBytes(alignedFrameLength * 2, packet, srcOffset, alignedFrameLength)).MustHaveHappened(); }
public void ShouldInsertIntoEmptyBuffer() { UnsafeBuffer packet = new UnsafeBuffer(new byte[256]); const int termOffset = 0; const int srcOffset = 0; const int length = 256; packet.PutInt(srcOffset, length); A.CallTo(() => _termBuffer.GetInt(0)).Returns(length); TermRebuilder.Insert(_termBuffer, termOffset, packet, length); A.CallTo(() => _termBuffer.PutBytes(termOffset, packet, srcOffset, length)).MustHaveHappened() .Then(A.CallTo(() => _termBuffer.PutIntOrdered(termOffset, length)).MustHaveHappened()); }
public void ShouldInsertIntoEmptyBuffer() { UnsafeBuffer packet = new UnsafeBuffer(new byte[256]); const int termOffset = 0; const int srcOffset = 0; const int length = 256; packet.PutInt(srcOffset, length); TermRebuilder.Insert(_termBuffer, termOffset, packet, length); A.CallTo(() => _termBuffer.PutBytes(termOffset + DataHeaderFlyweight.HEADER_LENGTH, packet, srcOffset + DataHeaderFlyweight.HEADER_LENGTH, length - DataHeaderFlyweight.HEADER_LENGTH)).MustHaveHappened() .Then(A.CallTo(() => _termBuffer.PutLong(termOffset + 24, packet.GetLong(24))).MustHaveHappened()) .Then(A.CallTo(() => _termBuffer.PutLong(termOffset + 16, packet.GetLong(16))).MustHaveHappened()) .Then(A.CallTo(() => _termBuffer.PutLong(termOffset + 8, packet.GetLong(8))).MustHaveHappened()) .Then(A.CallTo(() => _termBuffer.PutLongOrdered(termOffset, packet.GetLong(0))).MustHaveHappened()); }