use of io.netty.handler.codec.LengthFieldPrepender in project neo4j by neo4j.
the class RaftServer method startNettyServer.
private void startNettyServer() {
workerGroup = new NioEventLoopGroup(0, threadFactory);
log.info("Starting server at: " + listenAddress);
ServerBootstrap bootstrap = new ServerBootstrap().group(workerGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_REUSEADDR, true).localAddress(listenAddress.socketAddress()).childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE, 0, 4, 0, 4));
pipeline.addLast(new LengthFieldPrepender(4));
pipeline.addLast(new VersionDecoder(logProvider));
pipeline.addLast(new VersionPrepender());
pipeline.addLast(new RaftMessageDecoder(marshal));
pipeline.addLast(new RaftMessageHandler());
pipeline.addLast(new ExceptionLoggingHandler(log));
pipeline.addLast(new ExceptionMonitoringHandler(monitors.newMonitor(ExceptionMonitoringHandler.Monitor.class, RaftServer.class)));
pipeline.addLast(new ExceptionSwallowingHandler());
}
});
try {
channel = bootstrap.bind().syncUninterruptibly().channel();
} catch (Exception e) {
//noinspection ConstantConditions
if (e instanceof BindException) {
userLog.error("Address is already bound for setting: " + setting + " with value: " + listenAddress);
log.error("Address is already bound for setting: " + setting + " with value: " + listenAddress, e);
throw e;
}
}
}
use of io.netty.handler.codec.LengthFieldPrepender in project neo4j by neo4j.
the class CatchupServer method start.
@Override
public synchronized void start() throws Throwable {
if (channel != null) {
return;
}
workerGroup = new NioEventLoopGroup(0, threadFactory);
ServerBootstrap bootstrap = new ServerBootstrap().group(workerGroup).channel(NioServerSocketChannel.class).localAddress(listenAddress.socketAddress()).childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) {
CatchupServerProtocol protocol = new CatchupServerProtocol();
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE, 0, 4, 0, 4));
pipeline.addLast(new LengthFieldPrepender(4));
pipeline.addLast(new VersionDecoder(logProvider));
pipeline.addLast(new VersionPrepender());
pipeline.addLast(new ResponseMessageTypeEncoder());
pipeline.addLast(new RequestMessageTypeEncoder());
pipeline.addLast(new TxPullResponseEncoder());
pipeline.addLast(new CoreSnapshotEncoder());
pipeline.addLast(new GetStoreIdResponseEncoder());
pipeline.addLast(new StoreCopyFinishedResponseEncoder());
pipeline.addLast(new TxStreamFinishedResponseEncoder());
pipeline.addLast(new FileChunkEncoder());
pipeline.addLast(new FileHeaderEncoder());
pipeline.addLast(new ServerMessageTypeHandler(protocol, logProvider));
pipeline.addLast(decoders(protocol));
pipeline.addLast(new TxPullRequestHandler(protocol, storeIdSupplier, dataSourceAvailabilitySupplier, transactionIdStoreSupplier, logicalTransactionStoreSupplier, txPullBatchSize, monitors, logProvider));
pipeline.addLast(new ChunkedWriteHandler());
pipeline.addLast(new GetStoreRequestHandler(protocol, dataSourceSupplier, checkPointerSupplier, fs, pageCache, logProvider, storeCopyCheckPointMutex));
pipeline.addLast(new GetStoreIdRequestHandler(protocol, storeIdSupplier));
if (coreState != null) {
pipeline.addLast(new CoreSnapshotRequestHandler(protocol, coreState));
}
pipeline.addLast(new ExceptionLoggingHandler(log));
pipeline.addLast(new ExceptionMonitoringHandler(monitors.newMonitor(ExceptionMonitoringHandler.Monitor.class, CatchupServer.class)));
pipeline.addLast(new ExceptionSwallowingHandler());
}
});
try {
channel = bootstrap.bind().syncUninterruptibly().channel();
} catch (Exception e) {
//noinspection ConstantConditions
if (e instanceof BindException) {
userLog.error("Address is already bound for setting: " + CausalClusteringSettings.transaction_listen_address + " with value: " + listenAddress);
log.error("Address is already bound for setting: " + CausalClusteringSettings.transaction_listen_address + " with value: " + listenAddress, e);
throw e;
}
}
}
use of io.netty.handler.codec.LengthFieldPrepender in project ProxProx by GoMint.
the class Pipeline method prepare.
public static void prepare(ChannelPipeline pipeline, ConnectionHandler connectionHandler) {
pipeline.addLast(FRAME_DECODER, new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE, 0, 4, 0, 4));
pipeline.addLast(PACKET_DECODER, new Decoder());
pipeline.addLast(FRAME_PREPENDER, new LengthFieldPrepender(4));
pipeline.addLast(PACKET_ENCODER, new Encoder());
pipeline.addLast(CONNECTION_HANDLER, connectionHandler);
}
use of io.netty.handler.codec.LengthFieldPrepender in project baseio by generallycloud.
the class MyNettyServer method service.
public static void service() throws Exception {
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(bossGroup, workerGroup);
bootstrap.channel(NioServerSocketChannel.class);
bootstrap.childHandler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE, 0, 4, 0, 4));
pipeline.addLast(new LengthFieldPrepender(4));
pipeline.addLast(new StringDecoder(CharsetUtil.UTF_8));
pipeline.addLast(new StringEncoder(CharsetUtil.UTF_8));
pipeline.addLast(new TcpServerHandler());
}
});
ChannelFuture f = bootstrap.bind(IP, PORT).sync();
f.channel().closeFuture().sync();
System.out.println("TCP服务器已启动");
}
use of io.netty.handler.codec.LengthFieldPrepender in project baseio by generallycloud.
the class NettyClient method main.
public static void main(String[] args) throws Exception {
EventLoopGroup group = new NioEventLoopGroup();
try {
Bootstrap b = new Bootstrap();
b.group(group);
b.channel(NioSocketChannel.class).option(ChannelOption.TCP_NODELAY, true);
b.handler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast("frameDecoder", new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE, 0, 4, 0, 4));
pipeline.addLast("frameEncoder", new LengthFieldPrepender(4));
pipeline.addLast("decoder", new StringDecoder(CharsetUtil.UTF_8));
pipeline.addLast("encoder", new StringEncoder(CharsetUtil.UTF_8));
pipeline.addLast("handler", new HelloClient());
}
});
System.out.println("################## Test start ####################");
long old = System.currentTimeMillis();
ChannelFuture f = b.connect("127.0.0.1", 5656).sync();
System.out.println(f.isSuccess());
Channel channel = f.channel();
System.out.println("channel is active :" + channel.isActive() + ",channel:" + channel);
for (int i = 0; i < time; i++) {
String s = "hello Service! ---> :" + i;
ChannelFuture f1 = channel.writeAndFlush(s);
f1.isDone();
}
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
long spend = (System.currentTimeMillis() - old);
System.out.println("## Execute Time:" + time);
System.out.println("## OP/S:" + new BigDecimal(time * 1000).divide(new BigDecimal(spend), 2, BigDecimal.ROUND_HALF_UP));
System.out.println("## Expend Time:" + spend);
f.channel().closeFuture().sync();
} catch (Exception e) {
e.printStackTrace();
} finally {
group.shutdownGracefully();
}
}
Aggregations