Я использую LengthFieldBasedFrameDecoder
для декодирования моего пакета в следующем формате:
| len(4 bytes) | cmd(2 bytes) | binary data(variable length which is the value of "len") |
cmd
означает код запроса, фиксированный 2 байта.
Иногда двоичные данные могут быть слишком большими, и я хочу сжать их в:
| len(4 bytes) | cmd(2 bytes) | compressed data(cmd + binary data) |
cmd
за len
установлено постоянное значение, такое как 100, которое обозначает, что части данных были сжаты.
Теперь я сделал это вручную в своем обработчике кодировщика пакетов. Я хочу спросить, может ли это быть сделано обработчиком netty вроде ZlibEncoder
?
Как:
ch.pipeline().addLast(new MyPackageEncoder());
ch.pipeline().addLast(new ZlibEncoder());
Но проблема в том, что ZlibEncoder
будет сжимать данные всего пакета, включая сегмент len
, это нежелательно, иначе граница данных будет потеряна.