Frame createFrame(ByteBufAllocator byteBufAllocator) { FragmentableFrame root = fragments.get(0); return root.createNonFragment(byteBufAllocator, metadata, data); }
private boolean shouldFragment(Frame frame) { if (maxFragmentSize == 0 || !(frame instanceof FragmentableFrame)) { return false; } FragmentableFrame fragmentableFrame = (FragmentableFrame) frame; return !fragmentableFrame.isFollowsFlagSet() && getFragmentableLength(fragmentableFrame) > maxFragmentSize; }
ByteBuf readDataFragment(int length) { int safeLength = min(length, frame.getDataLength() - dataIndex); ByteBuf fragment = frame.getUnsafeData().slice(dataIndex, safeLength); dataIndex += fragment.readableBytes(); return fragment; }
private int getFragmentableLength(FragmentableFrame fragmentableFrame) { return fragmentableFrame.getMetadataLength().orElse(0) + fragmentableFrame.getDataLength(); }
ByteBuf readMetadataFragment(int length) { Integer metadataLength = frame.getUnsafeMetadataLength(); ByteBuf metadata = frame.getUnsafeMetadata(); if (metadataLength == null || metadata == null) { throw new IllegalStateException("Cannot read metadata fragment with no metadata"); } int safeLength = min(length, metadataLength - metadataIndex); ByteBuf fragment = metadata.slice(metadataIndex, safeLength); metadataIndex += fragment.readableBytes(); return fragment; } }
@DisplayName("creates non-fragment") @Test default void createNonFragment() { ByteBuf metadata = getRandomByteBuf(2); ByteBuf data = getRandomByteBuf(2); FragmentableFrame frame = getFrameWithoutFollowsFlagSet().createNonFragment(DEFAULT, metadata, data); assertThat(frame.isFollowsFlagSet()).isFalse(); assertThat(frame.mapMetadata(Function.identity())).hasValue(metadata); assertThat(frame.mapData(Function.identity())).isEqualTo(data); }
@DisplayName("creates fragment") @Test default void createFragment() { ByteBuf metadata = getRandomByteBuf(2); ByteBuf data = getRandomByteBuf(2); FragmentableFrame frame = getFrameWithoutFollowsFlagSet().createFragment(DEFAULT, metadata, data); assertThat(frame.isFollowsFlagSet()).isTrue(); assertThat(frame.mapMetadata(Function.identity())).hasValue(metadata); assertThat(frame.mapData(Function.identity())).isEqualTo(data); }
Frame createFrame( ByteBufAllocator byteBufAllocator, boolean complete, @Nullable ByteBuf metadata, @Nullable ByteBuf data) { if (initialFragmentCreated) { return createPayloadFrame(byteBufAllocator, !complete, data == null, metadata, data); } else { initialFragmentCreated = true; return frame.createFragment(byteBufAllocator, metadata, data); } }
private @Nullable ByteBuf accumulateMetadata(FragmentableFrame fragment) { ByteBuf metadata = fragment.getUnsafeMetadata(); if (metadata == null) { return this.metadata; } return this.metadata == null ? metadata.retain() : Unpooled.wrappedBuffer(this.metadata, metadata.retain()); } }
boolean hasReadableMetadata() { Integer metadataLength = frame.getUnsafeMetadataLength(); return metadataLength != null && metadataLength - metadataIndex > 0; }
private ByteBuf accumulateData(FragmentableFrame fragment) { ByteBuf data = fragment.getUnsafeData(); return this.data == null ? data.retain() : Unpooled.wrappedBuffer(this.data, data.retain()); }
boolean hasReadableData() { return frame.getDataLength() - dataIndex > 0; }
ByteBuf readMetadataFragment(int length) { Integer metadataLength = frame.getUnsafeMetadataLength(); ByteBuf metadata = frame.getUnsafeMetadata(); if (metadataLength == null || metadata == null) { throw new IllegalStateException("Cannot read metadata fragment with no metadata"); } int safeLength = min(length, metadataLength - metadataIndex); ByteBuf fragment = metadata.slice(metadataIndex, safeLength); metadataIndex += fragment.readableBytes(); return fragment; } }
private int getFragmentableLength(FragmentableFrame fragmentableFrame) { return fragmentableFrame.getMetadataLength().orElse(0) + fragmentableFrame.getDataLength(); }
@DisplayName("createFragment throws NullPointerException with null ByteBufAllocator") @Test default void createInitialFragmentNullByteBufAllocator() { assertThatNullPointerException() .isThrownBy(() -> getFrameWithoutFollowsFlagSet().createFragment(null, null, null)) .withMessage("byteBufAllocator must not be null"); }
private @Nullable ByteBuf accumulateMetadata(FragmentableFrame fragment) { ByteBuf metadata = fragment.getUnsafeMetadata(); if (metadata == null) { return this.metadata; } return this.metadata == null ? metadata.retain() : Unpooled.wrappedBuffer(this.metadata, metadata.retain()); } }
boolean hasReadableMetadata() { Integer metadataLength = frame.getUnsafeMetadataLength(); return metadataLength != null && metadataLength - metadataIndex > 0; }
private ByteBuf accumulateData(FragmentableFrame fragment) { ByteBuf data = fragment.getUnsafeData(); return this.data == null ? data.retain() : Unpooled.wrappedBuffer(this.data, data.retain()); }
boolean hasReadableData() { return frame.getDataLength() - dataIndex > 0; }
@DisplayName("tests follows flag not set") @Test default void isFollowFlagSetFalse() { assertThat(getFrameWithoutFollowsFlagSet().isFollowsFlagSet()).isFalse(); }