下面列出了怎么用io.netty.channel.CombinedChannelDuplexHandler的API类实例代码及写法,或者点击链接到github查看源代码。
static void autoAddHttpExtractor(Connection c, String name, ChannelHandler handler){
if (handler instanceof ByteToMessageDecoder
|| handler instanceof ByteToMessageCodec
|| handler instanceof CombinedChannelDuplexHandler) {
String extractorName = name+"$extractor";
if(c.channel().pipeline().context(extractorName) != null){
return;
}
c.channel().pipeline().addBefore(name, extractorName, HTTP_EXTRACTOR);
if(c.isPersistent()){
c.onTerminate().subscribe(null, null, () -> c.removeHandler(extractorName));
}
}
}
private CombinedChannelDuplexHandler<ChicagoResponseDecoder, ChicagoRequestEncoder>
newMessageHandler() {
return new CombinedChannelDuplexHandler<ChicagoResponseDecoder, ChicagoRequestEncoder>(
new ChicagoResponseDecoder(), new ChicagoRequestEncoder());
}
private CombinedChannelDuplexHandler<Murmur3HashedFrameDecoder, Murmur3HashedFrameEncoder>
newMurmur3HashHandler() {
return new CombinedChannelDuplexHandler<Murmur3HashedFrameDecoder, Murmur3HashedFrameEncoder>(
new Murmur3HashedFrameDecoder(), new Murmur3HashedFrameEncoder());
}
private CombinedChannelDuplexHandler<LengthFieldBasedFrameDecoder, LengthFieldPrepender>
newLengthFieldBasedFrameHandler() {
return new CombinedChannelDuplexHandler<LengthFieldBasedFrameDecoder, LengthFieldPrepender>(
new LengthFieldBasedFrameDecoder(65535, 0, 2, 0, 2), new LengthFieldPrepender(2));
}