List of usage examples for io.netty.channel.socket DatagramChannelConfig setSendBufferSize
DatagramChannelConfig setSendBufferSize(int sendBufferSize);
From source file:reactor.io.net.netty.udp.NettyDatagramServer.java
License:Apache License
public NettyDatagramServer(@Nonnull Environment env, @Nonnull EventBus reactor, @Nullable InetSocketAddress listenAddress, @Nullable final NetworkInterface multicastInterface, @Nonnull final ServerSocketOptions options, @Nullable Codec<Buffer, IN, OUT> codec, Collection<Consumer<NetChannel<IN, OUT>>> consumers) { super(env, reactor, listenAddress, multicastInterface, options, codec, consumers); if (options instanceof NettyServerSocketOptions) { this.nettyOptions = (NettyServerSocketOptions) options; } else {// w ww . j a v a 2 s .c o m this.nettyOptions = null; } if (null != nettyOptions && null != nettyOptions.eventLoopGroup()) { this.ioGroup = nettyOptions.eventLoopGroup(); } else { int ioThreadCount = env.getProperty("reactor.udp.ioThreadCount", Integer.class, Environment.PROCESSORS); this.ioGroup = new NioEventLoopGroup(ioThreadCount, new NamedDaemonThreadFactory("reactor-udp-io")); } final NettyNetChannelInboundHandler inboundHandler = new NettyNetChannelInboundHandler() { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { super.channelRead(ctx, ((DatagramPacket) msg).content()); } }; this.bootstrap = new Bootstrap().group(ioGroup).option(ChannelOption.SO_RCVBUF, options.rcvbuf()) .option(ChannelOption.SO_SNDBUF, options.sndbuf()) .option(ChannelOption.SO_REUSEADDR, options.reuseAddr()) .channelFactory(new ChannelFactory<Channel>() { @Override public Channel newChannel() { final NioDatagramChannel ch = new NioDatagramChannel(); DatagramChannelConfig config = ch.config(); config.setReceiveBufferSize(options.rcvbuf()); config.setSendBufferSize(options.sndbuf()); config.setReuseAddress(options.reuseAddr()); if (null != multicastInterface) { config.setNetworkInterface(multicastInterface); } if (null != nettyOptions && null != nettyOptions.pipelineConfigurer()) { nettyOptions.pipelineConfigurer().accept(ch.pipeline()); } ch.closeFuture().addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { if (log.isInfoEnabled()) { log.info("CLOSE {}", ch); } close(ch); } }); netChannel = (NettyNetChannel<IN, OUT>) select(ch); inboundHandler.setNetChannel(netChannel); ch.pipeline().addLast(new ChannelOutboundHandlerAdapter() { @Override public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { super.write(ctx, msg, promise); } }); return ch; } }).handler(inboundHandler); if (null != listenAddress) { bootstrap.localAddress(listenAddress); } else { bootstrap.localAddress(NetUtil.LOCALHOST, 3000); } if (null != multicastInterface) { bootstrap.option(ChannelOption.IP_MULTICAST_IF, multicastInterface); } }