I am exploring how to add multiple handlers in channel pipelines in SwiftNIO. In Java Netty, I have the following code:
@Component
public class NettyClientFilter extends ChannelInitializer<SocketChannel> {
@Autowired
private NettyClientHandler nettyClientHandler;
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline ph = ch.pipeline();
ph.addLast(new IdleStateHandler(20, 10, 0));
ph.addLast(new LengthFieldBasedFrameDecoder(1024, 0, 4, 0, 4));
ph.addLast(new ProtobufDecoder(IMessage.getDefaultInstance()));
ph.addLast(new LengthFieldPrepender(4));
ph.addLast(new ProtobufEncoder());
ph.addLast("nettyClientHandler",nettyClientHandler);
}
}
In the SwiftNIO, seems there are no similar classes as "LengthFieldBasedFrameDecoder", "ProtobufDecoder", "LengthFieldPrepender", "ProtobufEncoder". How can I get those ones in SwiftNIO?
Right, let me go through all the handlers you add to your pipeline in Netty:
IdleStateHandler
: available withimport NIO
from theswift-nio
packageLengthFieldBasedFrameDecoder
: right now in a PR but will be available shortly throughimport NIOExtras
from theswift-nio-extras
packageProtobufDecoder
,LengthFieldPrepender
,ProtobufEncoder
: all currently unavailable but straightforward to implement:LengthFieldPrepender
:ProtobufDecoder
:ProtobufEncoder
: