@Override public void initChannel(SocketChannel ch) throws Exception { ChannelPipeline pipeline = ch.pipeline(); // Enable stream compression (you can remove these two if unnecessary) pipeline.addLast("deflater", ZlibCodecFactory.newZlibEncoder(ZlibWrapper.GZIP)); pipeline.addLast("inflater", ZlibCodecFactory.newZlibDecoder(ZlibWrapper.GZIP)); // Add the number codec first, pipeline.addLast("decoder", new BigIntegerDecoder()); pipeline.addLast("encoder", new NumberEncoder()); // and then business logic. // Please note we create a handler for every new channel // because it has stateful properties. pipeline.addLast("handler", new FactorialServerHandler()); }
@Override public void initChannel(SocketChannel ch) throws Exception { ChannelPipeline pipeline = ch.pipeline(); // Enable stream compression (you can remove these two if unnecessary) if (compress) { pipeline.addLast("deflater", ZlibCodecFactory.newZlibEncoder(ZlibWrapper.GZIP)); pipeline.addLast("inflater", ZlibCodecFactory.newZlibDecoder(ZlibWrapper.GZIP)); } /** * length (4 bytes). * * <p>Note: max message size is 64 Mb = 67108864 bytes this defines a framer with a max of 64 Mb * message, 4 bytes are the length, and strip 4 bytes */ pipeline.addLast("frameDecoder", new LengthFieldBasedFrameDecoder(67108864, 0, 4, 0, 4)); // pipeline.addLast("frameDecoder", new // DebugFrameDecoder(67108864, 0, 4, 0, 4)); // decoder must be first Object[] messageTypes = { Management.getDefaultInstance(), Image.Request.getDefaultInstance(), App.Request.getDefaultInstance() }; pipeline.addLast("protobufDecoder", new CustomRaftDecoder(messageTypes)); // pipeline.addLast("protobufDecoder", new ProtobufDecoder(Management.getDefaultInstance())); // pipeline.addLast("protobufDecoder2", new ProtobufDecoder(Request.getDefaultInstance())); pipeline.addLast("frameEncoder", new LengthFieldPrepender(4)); pipeline.addLast("protobufEncoder", new ProtobufEncoder()); // our server processor (new instance for each connection) pipeline.addLast("handler", handler); }