@Test public void shouldWriteCorrectValuesForGenericHeaderFields() { encodeHeader.wrap(aBuff); encodeHeader.version((short)1); encodeHeader.flags(DataHeaderFlyweight.BEGIN_AND_END_FLAGS); encodeHeader.headerType(HeaderFlyweight.HDR_TYPE_DATA); encodeHeader.frameLength(8); // little endian assertThat(buffer.get(0), is((byte)0x08)); assertThat(buffer.get(1), is((byte)0x00)); assertThat(buffer.get(2), is((byte)0x00)); assertThat(buffer.get(3), is((byte)0x00)); assertThat(buffer.get(4), is((byte)0x01)); assertThat(buffer.get(5), is((byte)0xC0)); assertThat(buffer.get(6), is((byte)HeaderFlyweight.HDR_TYPE_DATA)); assertThat(buffer.get(7), is((byte)0x00)); }
@Test public void shouldReadWhatIsWrittenToGenericHeaderFields() { encodeHeader.wrap(aBuff); encodeHeader.version((short)1); encodeHeader.flags((short)0); encodeHeader.headerType(HeaderFlyweight.HDR_TYPE_DATA); encodeHeader.frameLength(8); decodeHeader.wrap(aBuff); assertThat(decodeHeader.version(), is((short)1)); assertThat(decodeHeader.headerType(), is(HeaderFlyweight.HDR_TYPE_DATA)); assertThat(decodeHeader.frameLength(), is(8)); }
@Test public void shouldWriteAndReadMultipleFramesCorrectly() { encodeHeader.wrap(aBuff); encodeHeader.version((short)1); encodeHeader.flags((short)0); encodeHeader.headerType(HeaderFlyweight.HDR_TYPE_DATA); encodeHeader.frameLength(8); encodeHeader.wrap(aBuff, 8, aBuff.capacity() - 8); encodeHeader.version((short)2); encodeHeader.flags((short)0x01); encodeHeader.headerType(HeaderFlyweight.HDR_TYPE_SM); encodeHeader.frameLength(8); decodeHeader.wrap(aBuff); assertThat(decodeHeader.version(), is((short)1)); assertThat(decodeHeader.flags(), is((short)0)); assertThat(decodeHeader.headerType(), is(HeaderFlyweight.HDR_TYPE_DATA)); assertThat(decodeHeader.frameLength(), is(8)); decodeHeader.wrap(aBuff, 8, aBuff.capacity() - 8); assertThat(decodeHeader.version(), is((short)2)); assertThat(decodeHeader.flags(), is((short)0x01)); assertThat(decodeHeader.headerType(), is(HeaderFlyweight.HDR_TYPE_SM)); assertThat(decodeHeader.frameLength(), is(8)); }
private void insertPaddingFrame(final int activeTermId, final 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); final int activeIndex = indexByTerm(INITIAL_TERM_ID, activeTermId); TermRebuilder.insert(termBuffers[activeIndex], termOffset, rcvBuffer, TERM_BUFFER_LENGTH - termOffset); }
private void fillSetupFrame(final SetupFlyweight header, final int termOffset) { header.wrap(setupBuffer); header .streamId(STREAM_ID) .sessionId(SESSION_ID) .initialTermId(INITIAL_TERM_ID) .activeTermId(ACTIVE_TERM_ID) .termOffset(termOffset) .frameLength(SetupFlyweight.HEADER_LENGTH) .headerType(HeaderFlyweight.HDR_TYPE_SETUP) .flags((byte)0) .version(HeaderFlyweight.CURRENT_VERSION); } }
private void insertDataFrame(final int offset, final byte[] payload) { dataHeader .termId(TERM_ID) .streamId(STREAM_ID) .sessionId(SESSION_ID) .termOffset(offset) .frameLength(payload.length + DataHeaderFlyweight.HEADER_LENGTH) .headerType(HeaderFlyweight.HDR_TYPE_DATA) .flags(DataHeaderFlyweight.BEGIN_AND_END_FLAGS) .version(HeaderFlyweight.CURRENT_VERSION); rcvBuffer.putBytes(dataHeader.dataOffset(), payload); TermRebuilder.insert(termBuffer, offset, rcvBuffer, payload.length + DataHeaderFlyweight.HEADER_LENGTH); }
private void fillDataFrame(final DataHeaderFlyweight header, final int termOffset, final byte[] payload) { header.wrap(dataBuffer); header .termOffset(termOffset) .termId(ACTIVE_TERM_ID) .streamId(STREAM_ID) .sessionId(SESSION_ID) .frameLength(DataHeaderFlyweight.HEADER_LENGTH + payload.length) .headerType(HeaderFlyweight.HDR_TYPE_DATA) .flags(DataHeaderFlyweight.BEGIN_AND_END_FLAGS) .version(HeaderFlyweight.CURRENT_VERSION); if (0 < payload.length) { dataBuffer.putBytes(header.dataOffset(), payload); } }
private void insertDataFrame(final int activeTermId, final int termOffset) { dataHeader .termId(INITIAL_TERM_ID) .streamId(STREAM_ID) .sessionId(SESSION_ID) .termOffset(termOffset) .frameLength(DATA.length + HEADER_LENGTH) .headerType(HeaderFlyweight.HDR_TYPE_DATA) .flags(DataHeaderFlyweight.BEGIN_AND_END_FLAGS) .version(HeaderFlyweight.CURRENT_VERSION); rcvBuffer.putBytes(dataHeader.dataOffset(), DATA); final int activeIndex = indexByTerm(INITIAL_TERM_ID, activeTermId); TermRebuilder.insert(termBuffers[activeIndex], termOffset, rcvBuffer, ALIGNED_FRAME_LENGTH); }
private void addReceivedDataFrame(final int msgNum) { dataHeader.wrap(rcvBuffer); dataHeader.termId(TERM_ID) .streamId(STREAM_ID) .sessionId(SESSION_ID) .termOffset(offsetOfFrame(msgNum)) .frameLength(MESSAGE_LENGTH) .headerType(HeaderFlyweight.HDR_TYPE_DATA) .flags(DataHeaderFlyweight.BEGIN_AND_END_FLAGS) .version(HeaderFlyweight.CURRENT_VERSION); rcvBuffer.putBytes(dataHeader.dataOffset(), DATA); TermRebuilder.insert(termBuffer, offsetOfFrame(msgNum), rcvBuffer, MESSAGE_LENGTH); } }