netty是http解析器可重用的怎么样?

时间:2012-12-11 23:35:46

标签: netty

我需要可重用的异步http解析代码。 netty可能只包含解析部分的api吗? (我总是相信解析器应该是独立的并且可以重复使用并且不依赖于框架,所以我希望netty也可以重用。)

即。像这样输入字节会很棒,如果是,则返回null 还没有足够的字节

private byte[] previousData;

byte[] data = incomingMergedWithPrevious(previousData);
HttpResponse resp = httpResponseParser.parse(data);
if(resp == null) {
    return; //we do not have full data to parse yet
}

//otherwise fire the response to someone else.

或许我可以用不同的方式重用代码。我知道的就是我得到的 因为它是,所以并不总是具有所有http头的字节 异步的东西。有什么方法可以解析东西吗?

注意:另外,我想做分块所以我不确定它应该每次都返回HttpResponse但是可能是一个List,其中一个子类是HttpHeaders而另一个是HttpChunk。

感谢, 迪安

2 个答案:

答案 0 :(得分:2)

您可以将DecoderEmbedderHttpMessageDecoder结合使用。 DecoderEmbedder页面上有一个例子。听起来你想使用pollAll方法。如果要以不同方式处理HttpResponse和HttpChunk消息,则需要检查每个返回对象的类型。

答案 1 :(得分:0)

在4.1.x系列中,方法是通过Select SUBSTRING('[68.0,00.2]', 2,CHARINDEX(',','[68.0,00.2]')-2) as cpu_01, SUBSTRING('[68.0,00.2]', CHARINDEX(',','[68.0,00.2]')+1, (LEN('[68.0,00.0]')-1)) as cpu_02 类。向其中添加一堆处理程序,然后使用包含原始http字节的EmbeddedChannel调用writeInboundXXX方法。例如,解析请求ByteBuf将使您的处理程序接收已解码的new EmbeddedChannel(new HttpRequestDecoder, new MyHandler)