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

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

Introduction

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

Prototype

@Override
    public ChannelFuture connect(SocketAddress remoteAddress) 

Source Link

Usage

From source file:org.opendaylight.usc.agent.UscAgentUdp.java

License:Open Source License

public UscAgentUdp(boolean callHome, InetAddress host, String propertyFile) {
    final UscAgentUdp agent = this;
    UscConfigurationServiceImpl.setDefaultPropertyFilePath(propertyFile);
    secureService = UscServiceUtils.getService(UscSecureService.class);
    b.group(bossGroup);/*from   w  w  w .j a  v a2 s.  co m*/
    b.channel(NioDatagramChannel.class);
    b.handler(new ChannelInitializer<NioDatagramChannel>() {
        @Override
        public void initChannel(NioDatagramChannel ch) throws Exception {
            ChannelPipeline p = ch.pipeline();
            agentServerChannel = ch;
            p.addLast(new ChannelInboundHandlerAdapter() {

                @Override
                public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
                    final Channel ch = ctx.channel();
                    final InetSocketAddress remoteAddress = ((DatagramPacket) msg).sender();

                    // this is to deal with UDP channels which don't by
                    // default have remote address
                    if (ch.remoteAddress() == null) {
                        ch.connect(remoteAddress);
                    }
                    ch.pipeline().remove(this);
                    super.channelRead(ctx, msg);
                }

            });
            if (secureService == null) {
                LOG.error("UscSecureService is not initialized!");
                return;
            }
            p.addLast(new LoggingHandler("UscAgnet Handler 5", LogLevel.TRACE));
            p.addLast(secureService.getUdpServerHandler(ch));
            p.addLast(new LoggingHandler("UscAgnet Handler 4", LogLevel.TRACE));
            p.addLast(new UscFrameEncoderUdp());
            p.addLast(new LoggingHandler("UscAgnet Handler 3", LogLevel.TRACE));
            p.addLast(new UscFrameDecoderUdp());
            p.addLast(new LoggingHandler("UscAgnet Handler 2", LogLevel.TRACE));
            p.addLast(new UscAgentUdpHandler(agent, ch));
            p.addLast(new LoggingHandler("UscAgnet Handler 1", LogLevel.TRACE));

        }
    });

    if (callHome) {
        cb.group(callHomeGroup);
        cb.channel(NioDatagramChannel.class);
        cb.handler(new ChannelInitializer<NioDatagramChannel>() {
            @Override
            public void initChannel(NioDatagramChannel ch) throws Exception {
                ChannelPipeline p = ch.pipeline();
                agentServerChannel = ch;
                p.addLast(new ChannelInboundHandlerAdapter() {

                    @Override
                    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
                        final Channel ch = ctx.channel();
                        final InetSocketAddress remoteAddress = ((DatagramPacket) msg).sender();

                        // this is to deal with UDP channels which don't by
                        // default have remote address
                        if (ch.remoteAddress() == null) {
                            ch.connect(remoteAddress);
                        }
                        ch.pipeline().remove(this);
                        super.channelRead(ctx, msg);
                    }

                });
                if (secureService == null) {
                    LOG.error("UscSecureService is not initialized!");
                    return;
                }
                p.addLast(new LoggingHandler("LOG2-5", LogLevel.TRACE));
                p.addLast(secureService.getUdpClientHandler(ch));
                p.addLast(new LoggingHandler("LOG2-4", LogLevel.TRACE));
                p.addLast(new UscFrameEncoderUdp());
                p.addLast(new LoggingHandler("LOG2-3", LogLevel.TRACE));
                p.addLast(new UscFrameDecoderUdp());
                p.addLast(new LoggingHandler("LOG2-2", LogLevel.TRACE));
                p.addLast(new UscAgentUdpHandler(agent, ch));
                p.addLast(new LoggingHandler("LOG2-1", LogLevel.TRACE));

            }
        });

        try {
            InetSocketAddress recipient = new InetSocketAddress(host, 1069);
            cb.connect(recipient).sync().channel();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}