Example usage for io.netty.channel.socket.nio NioDatagramChannel config

List of usage examples for io.netty.channel.socket.nio NioDatagramChannel config

Introduction

In this page you can find the example usage for io.netty.channel.socket.nio NioDatagramChannel config.

Prototype

DatagramChannelConfig config

To view the source code for io.netty.channel.socket.nio NioDatagramChannel config.

Click Source Link

Usage

From source file:com.barchart.netty.server.stream.MulticastTransceiver.java

License:BSD License

/**
 * Join the multicast group address using the network interface associated
 * with the given address.//from w  w  w  .j  a va  2  s . c om
 */
@Override
public ChannelFuture listen(final SocketAddress address) {

    if (pipelineInit == null) {
        throw new IllegalStateException("No pipeline initializer has been provided, server would do nothing");
    }

    // Kinda hacky, need to override bootstrap params based on passed
    // address

    final ChannelFuture future = bootstrap() //
            .option(ChannelOption.IP_MULTICAST_IF, bindInterface((InetSocketAddress) address)) //
            .localAddress(multicast.getPort()) //
            .remoteAddress(multicast) //
            .bind();

    future.addListener(new GenericFutureListener<ChannelFuture>() {

        @Override
        public void operationComplete(final ChannelFuture future) throws Exception {

            if (future.isSuccess()) {

                final NioDatagramChannel channel = (NioDatagramChannel) future.channel();

                channel.joinGroup(multicast, channel.config().getOption(ChannelOption.IP_MULTICAST_IF));

            }

        }

    });

    serverChannels.add(future.channel());

    return future;

}

From source file:com.barchart.netty.server.stream.MulticastTransceiver.java

License:BSD License

@Override
public Future<MulticastTransceiver> shutdown() {

    for (final Channel c : serverChannels) {

        final NioDatagramChannel dc = (NioDatagramChannel) c;

        final InetSocketAddress multicast = dc.remoteAddress();

        dc.leaveGroup(multicast, dc.config().getOption(ChannelOption.IP_MULTICAST_IF));

    }/*from  ww  w . j a  v  a 2 s .c  om*/

    return super.shutdown();

}

From source file:io.advantageous.conekt.datagram.impl.DatagramSocketImpl.java

License:Open Source License

private static NioDatagramChannel createChannel(
        io.advantageous.conekt.datagram.impl.InternetProtocolFamily family, DatagramSocketOptions options) {
    NioDatagramChannel channel;
    if (family == null) {
        channel = new NioDatagramChannel();
    } else {//from w w  w .j  a  v a 2 s . c  o  m
        switch (family) {
        case IPv4:
            channel = new NioDatagramChannel(InternetProtocolFamily.IPv4);
            break;
        case IPv6:
            channel = new NioDatagramChannel(InternetProtocolFamily.IPv6);
            break;
        default:
            channel = new NioDatagramChannel();
        }
    }
    if (options.getSendBufferSize() != -1) {
        channel.config().setSendBufferSize(options.getSendBufferSize());
    }
    if (options.getReceiveBufferSize() != -1) {
        channel.config().setReceiveBufferSize(options.getReceiveBufferSize());
        channel.config().setRecvByteBufAllocator(new FixedRecvByteBufAllocator(options.getReceiveBufferSize()));
    }
    channel.config().setReuseAddress(options.isReuseAddress());
    if (options.getTrafficClass() != -1) {
        channel.config().setTrafficClass(options.getTrafficClass());
    }
    channel.config().setBroadcast(options.isBroadcast());
    channel.config().setLoopbackModeDisabled(options.isLoopbackModeDisabled());
    if (options.getMulticastTimeToLive() != -1) {
        channel.config().setTimeToLive(options.getMulticastTimeToLive());
    }
    if (options.getMulticastNetworkInterface() != null) {
        try {
            channel.config()
                    .setNetworkInterface(NetworkInterface.getByName(options.getMulticastNetworkInterface()));
        } catch (SocketException e) {
            throw new IllegalArgumentException(
                    "Could not find network interface with name " + options.getMulticastNetworkInterface());
        }
    }
    return channel;
}

From source file:io.vertx.core.datagram.impl.DatagramSocketImpl.java

License:Open Source License

private static NioDatagramChannel createChannel(io.vertx.core.datagram.impl.InternetProtocolFamily family,
        DatagramSocketOptions options) {
    NioDatagramChannel channel;
    if (family == null) {
        channel = new NioDatagramChannel();
    } else {//www. j a  v  a  2s.c o  m
        switch (family) {
        case IPv4:
            channel = new NioDatagramChannel(InternetProtocolFamily.IPv4);
            break;
        case IPv6:
            channel = new NioDatagramChannel(InternetProtocolFamily.IPv6);
            break;
        default:
            channel = new NioDatagramChannel();
        }
    }
    if (options.getSendBufferSize() != -1) {
        channel.config().setSendBufferSize(options.getSendBufferSize());
    }
    if (options.getReceiveBufferSize() != -1) {
        channel.config().setReceiveBufferSize(options.getReceiveBufferSize());
        channel.config().setRecvByteBufAllocator(new FixedRecvByteBufAllocator(options.getReceiveBufferSize()));
    }
    channel.config().setReuseAddress(options.isReuseAddress());
    if (options.getTrafficClass() != -1) {
        channel.config().setTrafficClass(options.getTrafficClass());
    }
    channel.config().setBroadcast(options.isBroadcast());
    channel.config().setLoopbackModeDisabled(options.isLoopbackModeDisabled());
    if (options.getMulticastTimeToLive() != -1) {
        channel.config().setTimeToLive(options.getMulticastTimeToLive());
    }
    if (options.getMulticastNetworkInterface() != null) {
        try {
            channel.config()
                    .setNetworkInterface(NetworkInterface.getByName(options.getMulticastNetworkInterface()));
        } catch (SocketException e) {
            throw new IllegalArgumentException(
                    "Could not find network interface with name " + options.getMulticastNetworkInterface());
        }
    }
    return channel;
}

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  w w  .  ja v  a2  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);
    }
}