我有一个带有扩展 ReplayingDecoder 的 HTTP 消息解码器的 Netty 3 代码库,我需要迁移分析消息块的代码,这意味着我需要获取这些块。
protected Object decode(ChannelHandlerContext ctx, Channel channel,
ByteBuf buffer, State state) {
//...
HttpChunk chunk = new DefaultHttpChunk(buffer.readBytes(toRead));
//...
}
根据我收集到的信息,我需要改用 HttpChunkedInput,但创建一个非常困难。
//requires an InputStream...
HttpChunkedInput hc = new HttpChunkedInput(new ChunkedStream(...));
//but this seems really clunky/too awkward to be right.
HttpChunkedInput hc = new HttpChunkedInput(new ChunkedStream(new ByteArrayInputStream(buffer.array()));
ByteBuf 似乎没有办法直接转储流。我是否缺少更好的 Util 类 API?我确实发现有一个新的EmbeddedChannel类,它可以像这里一样简单地 readInbound() ,但我不确定我是否应该为此更改类型或将裸 Channel 转换为 EmbeddedChannel 以摆脱问题。