package com.myselia.stem.communication;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.codec.DelimiterBasedFrameDecoder;
import io.netty.handler.codec.Delimiters;
import io.netty.handler.codec.string.StringDecoder;
import io.netty.handler.codec.string.StringEncoder;
import io.netty.util.CharsetUtil;
public class StemClientSessionInitializer extends ChannelInitializer<SocketChannel> {
private static final int MAX_FRAME_SIZE = 8096;
private final StringDecoder stringDecoder = new StringDecoder(CharsetUtil.UTF_8);
private final StringEncoder stringEncoder = new StringEncoder(CharsetUtil.UTF_8);
public StemClientSessionInitializer() {
}
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
// ///////////////////////////////////////////////////////////////
/*
* Here we add all the relevant channel handlers to the pipeline
*/
// ///////////////////////////////////////////////////////////////
/*
* LOGGING
*/
//pipeline.addLast("loggingHandler", new LoggingHandler(LogLevel.TRACE));
/*
* TODO: TLS/SSL Security
*/
/*
* CODECS
*/
// Decoders
//pipeline.addLast("frameDecoder", new LineBasedFrameDecoder(MAX_FRAME_SIZE));
pipeline.addLast("frameDecoder", new DelimiterBasedFrameDecoder(MAX_FRAME_SIZE, true, Delimiters.lineDelimiter()));
pipeline.addLast("stringDecoder", stringDecoder);
// Encoders
pipeline.addLast("stringEncoder", stringEncoder);
/*
* APPLICATION BUSINESS LOGIC
*/
// Stem Session
pipeline.addLast("sessionSwapper", new StemClientSessionSwapper(ch));
}
}