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