Example usage for io.netty.channel ChannelFuture isSuccess

List of usage examples for io.netty.channel ChannelFuture isSuccess

Introduction

In this page you can find the example usage for io.netty.channel ChannelFuture isSuccess.

Prototype

boolean isSuccess();

Source Link

Document

Returns true if and only if the I/O operation was completed successfully.

Usage

From source file:com.gxkj.demo.netty.proxy.HexDumpProxyFrontendHandler.java

License:Apache License

@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
    final Channel inboundChannel = ctx.channel();

    // Start the connection attempt.
    Bootstrap b = new Bootstrap();
    b.group(inboundChannel.eventLoop()).channel(ctx.channel().getClass())
            .handler(new HexDumpProxyBackendHandler(inboundChannel)).option(ChannelOption.AUTO_READ, false);

    ChannelFuture f = b.connect(remoteHost, remotePort);
    outboundChannel = f.channel();/*  w  ww  .ja  v  a  2 s  .com*/
    f.addListener(new ChannelFutureListener() {
        @Override
        public void operationComplete(ChannelFuture future) throws Exception {
            if (future.isSuccess()) {
                // connection complete start to read first data
                inboundChannel.read();
            } else {
                // Close the connection if the connection attempt has failed.
                inboundChannel.close();
            }
        }
    });
}

From source file:com.gxkj.demo.netty.proxy.HexDumpProxyFrontendHandler.java

License:Apache License

@Override
public void channelRead(final ChannelHandlerContext ctx, Object msg) throws Exception {
    if (outboundChannel.isActive()) {
        outboundChannel.writeAndFlush(msg).addListener(new ChannelFutureListener() {
            @Override/* www . j  a  va2s  .c o m*/
            public void operationComplete(ChannelFuture future) throws Exception {
                if (future.isSuccess()) {
                    // was able to flush out data, start to read the next chunk
                    ctx.channel().read();
                } else {
                    future.channel().close();
                }
            }
        });
    }
}

From source file:com.hazelcast.openshift.TunnelClientAcceptor.java

License:Open Source License

private Channel createRemoteChannel(Channel socket) throws Exception {
    Bootstrap bootstrap = createBootstrap(socket);
    ChannelFuture connectFuture = bootstrap.connect(forwardHost, forwardPort);
    ChannelFuture future = connectFuture.sync();
    if (!future.isSuccess()) {
        return null;
    }//from w  w  w .java2 s.c o m

    return future.channel();
}

From source file:com.heliosapm.streams.tracing.writers.NetWriter.java

License:Apache License

/**
 * {@inheritDoc}/*from  ww w . j a v a2s.c  o  m*/
 * @see com.heliosapm.streams.tracing.AbstractMetricWriter#doMetrics(java.util.Collection)
 */
@Override
protected void doMetrics(final Collection<StreamedMetric> metrics) {
    if (metrics == null || metrics.isEmpty())
        return;
    final int size = metrics.size();
    if (!connectionsAvailable.get()) {
        failedMetrics.add(size);
        return;
    }

    boolean complete = false;
    for (Channel ch : channels) {
        final ChannelFuture cf = ch.writeAndFlush(metrics).syncUninterruptibly();
        if (cf.isSuccess()) {
            complete = true;
            sentMetrics.add(size);
            break;
        }
    }
    if (!complete) {
        failedMetrics.add(size);
    }
}

From source file:com.heliosapm.streams.tracing.writers.NetWriter.java

License:Apache License

/**
 * {@inheritDoc}//  w  w w.j  av  a 2s  .  com
 * @see com.heliosapm.streams.tracing.AbstractMetricWriter#doMetrics(com.heliosapm.streams.metrics.StreamedMetric[])
 */
@Override
protected void doMetrics(final StreamedMetric... metrics) {
    if (metrics == null || metrics.length == 0)
        return;
    final int size = metrics.length;
    if (!connectionsAvailable.get()) {
        failedMetrics.add(size);
        return;
    }
    boolean complete = false;
    for (Channel ch : channels) {
        final ChannelFuture cf = ch.writeAndFlush(metrics).syncUninterruptibly();
        if (cf.isSuccess()) {
            complete = true;
            sentMetrics.add(size);
            break;
        }
    }
    if (!complete) {
        this.failedMetrics.add(size);
    }
}

From source file:com.heliosapm.streams.tracing.writers.NetWriter.java

License:Apache License

/**
 * {@inheritDoc}// w  w w  .  j  a va  2 s  . c  o m
 * @see com.heliosapm.streams.tracing.AbstractMetricWriter#onMetrics(io.netty.buffer.ByteBuf)
 */
@Override
public void onMetrics(final ByteBuf metrics) {
    if (metrics == null || metrics.readableBytes() < 5)
        return;
    final int size = metrics.getInt(1);
    if (!connectionsAvailable.get()) {
        // FIXME: drop counter
        return;
    }

    boolean complete = false;
    for (Channel ch : channels) {
        final ChannelFuture cf = ch.writeAndFlush(metrics).syncUninterruptibly();
        if (cf.isSuccess()) {
            complete = true;
            break;
        }
    }
    if (!complete) {
        this.failedMetrics.add(size);
    }
}

From source file:com.hipishare.chat.SecureChatClient.java

License:Apache License

public static void main(String[] args) throws Exception {
    // Configure SSL.
    final SslContext sslCtx = SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE)
            .build();//from   w  ww.ja va2s  .c o  m

    EventLoopGroup group = new NioEventLoopGroup();
    try {
        bootstrap = new Bootstrap();
        bootstrap.group(group).channel(NioSocketChannel.class).handler(new SecureChatClientInitializer(sslCtx));

        // Start the connection attempt.
        ChannelFuture channelFuture = bootstrap.connect(HOST, PORT).sync();
        channel = channelFuture.channel();
        //         channel.closeFuture().sync();

        // add reconnect listener
        reConnectListener = new ChannelFutureListener() {
            @Override
            public void operationComplete(ChannelFuture future) throws Exception {
                if (future.isSuccess()) {
                    channel.close();
                    channel = future.channel();
                    LOG.info("???");
                } else {
                    LOG.info("??");
                    // 3??
                    future.channel().eventLoop().schedule(new Runnable() {
                        @Override
                        public void run() {
                            reConnect();
                        }
                    }, 3, TimeUnit.SECONDS);
                }
            }
        };

        // Read commands from the stdin.
        ChannelFuture lastWriteFuture = null;
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        for (;;) {
            String line = in.readLine();
            if (line == null) {
                break;
            }

            // Sends the received line to the server.
            LOG.info("isActive=" + channel.isActive());
            LOG.info("isOpen=" + channel.isOpen());
            LOG.info("isWritable=" + channel.isWritable());
            if (!channel.isOpen()) {
                reConnect();
            }
            lastWriteFuture = channel.writeAndFlush("[channelId=" + channel.id() + "]" + line + "\r\n");

            // If user typed the 'bye' command, wait until the server closes
            // the connection.
            if ("bye".equals(line.toLowerCase())) {
                channel.closeFuture().sync();
                break;
            }
        }

        // Wait until all messages are flushed before closing the channel.
        if (lastWriteFuture != null) {
            lastWriteFuture.sync();
        }
    } finally {
        // The connection is closed automatically on shutdown.
        group.shutdownGracefully();
    }
}

From source file:com.hipishare.chat.securetest.SecureChatClient.java

License:Apache License

public static void main(String[] args) throws Exception {
    // Configure SSL.
    final SslContext sslCtx = SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE)
            .build();/*  w ww .j  av a 2s  .c  om*/

    EventLoopGroup group = new NioEventLoopGroup();
    try {
        bootstrap = new Bootstrap();
        bootstrap.group(group).channel(NioSocketChannel.class).handler(new SecureChatClientInitializer(sslCtx));

        // Start the connection attempt.
        ChannelFuture channelFuture = bootstrap.connect(HOST, PORT).sync();
        channel = channelFuture.channel();

        // add reconnect listener
        reConnectListener = new ChannelFutureListener() {
            @Override
            public void operationComplete(ChannelFuture future) throws Exception {
                if (future.isSuccess()) {
                    channel.close();
                    channel = future.channel();
                    LOG.info("???");
                } else {
                    LOG.info("??");
                    // 3??
                    future.channel().eventLoop().schedule(new Runnable() {
                        @Override
                        public void run() {
                            reConnect();
                        }
                    }, 3, TimeUnit.SECONDS);
                }
            }
        };

        // Read commands from the stdin.
        ChannelFuture lastWriteFuture = null;
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        for (;;) {
            String line = in.readLine();
            if (line == null) {
                break;
            }

            // Sends the received line to the server.
            if (!channel.isOpen()) {
                reConnect();
            }
            MsgObject msgObj = new MsgObject();
            Gson gson = new Gson();
            if ("1".equals(line)) {
                User user = new User();
                user.setAccount("peter");
                user.setPwd("666666");
                msgObj.setC(CmdEnum.LOGIN.getCmd());
                msgObj.setM(gson.toJson(user));
            } else if ("2".equals(line)) {
                ChatObject co = new ChatObject();
                co.setContent("hello,jack. I am peter.");
                co.setMsgType("text");
                co.setMsgTo("jack");
                co.setMsgFrom("peter");
                co.setCreateTime(System.currentTimeMillis());
                msgObj.setC(CmdEnum.CHAT.getCmd());
                msgObj.setM(gson.toJson(co));
            } else if ("3".equals(line)) {
                RegisterCode rc = new RegisterCode();
                rc.setMobile("13410969042");
                rc.setSign("fdsafsadf");
                msgObj.setC(CmdEnum.REGISTER_CODE.getCmd());
                msgObj.setM(gson.toJson(rc));
            } else if ("4".equals(line)) {
                RegisterCode rc = new RegisterCode();
                rc.setMobile("13410969042");
                rc.setCode("3243");
                rc.setSign("fdsafsadf");
                msgObj.setC(CmdEnum.REGISTER.getCmd());
                msgObj.setM(gson.toJson(rc));
            }
            String msg = gson.toJson(msgObj);
            ByteBuf buf = Unpooled.copiedBuffer(msg.getBytes());
            lastWriteFuture = channel.writeAndFlush(buf);

            // If user typed the 'bye' command, wait until the server closes
            // the connection.
            if ("bye".equals(line.toLowerCase())) {
                channel.closeFuture().sync();
                break;
            }
        }

        // Wait until all messages are flushed before closing the channel.
        if (lastWriteFuture != null) {
            lastWriteFuture.sync();
        }
        channel.closeFuture().sync();
    } finally {
        // The connection is closed automatically on shutdown.
        group.shutdownGracefully();
    }
}

From source file:com.hop.hhxx.example.proxy.HexDumpProxyFrontendHandler.java

License:Apache License

@Override
public void channelActive(ChannelHandlerContext ctx) {
    final Channel inboundChannel = ctx.channel();

    // Start the connection attempt.
    Bootstrap b = new Bootstrap();
    b.group(inboundChannel.eventLoop()).channel(ctx.channel().getClass())
            .handler(new io.netty.example.proxy.HexDumpProxyBackendHandler(inboundChannel))
            .option(ChannelOption.AUTO_READ, false);
    ChannelFuture f = b.connect(remoteHost, remotePort);
    outboundChannel = f.channel();/*  w w  w .  j  av  a  2  s.c  o  m*/
    f.addListener(new ChannelFutureListener() {
        @Override
        public void operationComplete(ChannelFuture future) {
            if (future.isSuccess()) {
                // connection complete start to read first data
                inboundChannel.read();
            } else {
                // Close the connection if the connection attempt has failed.
                inboundChannel.close();
            }
        }
    });
}

From source file:com.hop.hhxx.example.proxy.HexDumpProxyFrontendHandler.java

License:Apache License

@Override
public void channelRead(final ChannelHandlerContext ctx, Object msg) {
    if (outboundChannel.isActive()) {
        outboundChannel.writeAndFlush(msg).addListener(new ChannelFutureListener() {
            @Override//  ww w.j av a  2s.  c  o m
            public void operationComplete(ChannelFuture future) {
                if (future.isSuccess()) {
                    // was able to flush out data, start to read the next chunk
                    ctx.channel().read();
                } else {
                    future.channel().close();
                }
            }
        });
    }
}