什么是Netty DecoderResult以及如何使用它?

什么是Netty DecoderResult以及如何使用它?,netty,Netty,我正在学习如何使用Netty(这是一个全新的工具)。我研究了Netty文档中给出的HTTP服务器示例。但是我不明白什么是DecoderResult,以及在示例中如何使用它 到目前为止我学到的: 1.解码器将字节转换为更复杂的对象。在本例中,将字节发送到HttpRequest 2.在最后一个ChannelInboundHandler(所有解码完成后)中,我收到了我的对象(例如HttpRequest)。 3.的channelRead0方法的实现非常清楚:获取对象、向下转换、提取信息、构建响应,并在准

我正在学习如何使用Netty(这是一个全新的工具)。我研究了Netty文档中给出的HTTP服务器示例。但是我不明白什么是
DecoderResult
,以及在示例中如何使用它

到目前为止我学到的:
1.解码器将字节转换为更复杂的对象。在本例中,将字节发送到
HttpRequest

2.在最后一个
ChannelInboundHandler
(所有解码完成后)中,我收到了我的对象(例如
HttpRequest
)。
3.的
channelRead0
方法的实现非常清楚:获取对象、向下转换、提取信息、构建响应,并在准备就绪时编写

我不明白的是,为什么在读取了
HttpRequest
对象中的一些内容后,会在处检查解码结果(即
appendDecoderResult
)?在触摸
msg
之前,我是否应该检查此类故障。更一般地说,当解码失败时会发生什么

为了记录在案,下面是我感到困惑的代码部分:


它实际上是HTTP解码器,这意味着它读取数据并试图将其解码为HTTP请求。在执行此操作时,可能会遇到一些可能导致解码过程失败的问题。无论如何,已经解码的数据都不能少用。所以我想顺序并不重要

@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
    if (msg instanceof HttpRequest) {
        val request = (HttpRequest) msg;

        // read all sort of stuff from request
        // and add them to the response buffer;

        // This is the line confused me :/
        appendDecoderResult(buf, request);
    }
}