ByteBuf будет очищен при изменении его емкости в Netty4

Регулирует емкость этого буфера. Если {@code newCapacity} меньше текущей емкости, содержимое этого буфера усекается. Если {@code newCapacity} больше текущей емкости, к буферу добавляются неопределенные данные, длина которых равна {@code (newCapacity - currentCapacity)}.

Из комментариев к ByteBuf.capacity(int newCapacity), показанных выше, мы исключили, что содержимое ByteBuf до этого метода останется после его расширения. Но этот контрольный пример не удался.

ByteBuf bb =
    PooledByteBufAllocator.DEFAULT.directBuffer().order(
        ByteOrder.nativeOrder());

bb.setInt(4, 333);
TestCase.assertEquals(333, bb.getInt(4)); // passed
bb.capacity(4096);
TestCase.assertEquals(333, bb.getInt(4)); // failed

Мы получаем провал утверждения.

junit.framework.AssertionFailedError: expected:<333> but was:<0>

Кто-нибудь может объяснить это и сказать мне, как я могу увеличить ByteBuf без изменения его содержимого?

Спасибо мин

1 ответ

Я думаю, что это связано с этим сообщением об ошибке... В настоящее время мы расследуем это: https://github.com/netty/netty/issues/1800

Другие вопросы по тегам