Расширяемый эквивалент ByteBuffer, поддерживающий запись/чтение с прямым порядком байтов?

В настоящее время я использую ByteBuffer для хранения цепочки примитивов перед отправкой по сети. Я использую data.order(ByteOrder.LITTLE_ENDIAN);, потому что именно так должны отправляться данные.

Есть ли эквивалент ByteBuffer, который поддерживает putShort()... с прямым порядком байтов и может быть расширен?

Я мог бы написать обертку, которая проверяет limit() и position(), создавая при необходимости новый и больший ByteBuffer, но я не могу поверить, что нет другого существующего класса, который может это сделать.


person AndrewBourgeois    schedule 15.09.2011    source источник


Ответы (1)


Похоже, у Apache Mina есть то, что вам нужно: http://mina.apache.org/report/1.1/apidocs/org/apache/mina/common/ByteBuffer.html

Я знаю, что Мина используется во многих производственных системах обмена сообщениями, так что это, вероятно, лучший выбор, чем другие результаты, которые выдал Google. И поскольку вы, похоже, пишете сетевой код, вам могут пригодиться дополнительные фрагменты Mina.

Однако я думаю, что было бы намного проще выделить буфер JDK, который намного больше, чем необходимо, с простой проверкой, чтобы убедиться, что вы не переполняете его. В случае переполнения запишите первый буфер, а затем выделите замену.

person parsifal    schedule 15.09.2011