Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        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());
        }
Ejemplo n.º 7
0
        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());
        }