类io.netty.channel.group.ChannelGroupFutureListener源码实例Demo

下面列出了怎么用io.netty.channel.group.ChannelGroupFutureListener的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: TakinRPC   文件: RpcServer.java
@Override
protected void doStop() {
    try {
        ChannelGroupFuture f = allChannels.close();
        f.addListener(new ChannelGroupFutureListener() {
            @Override
            public void operationComplete(ChannelGroupFuture future) throws Exception {
                if (future.isSuccess()) {
                    notifyStopped();
                } else {
                    notifyFailed(future.cause());
                }
            }
        });
    } catch (Throwable t) {
        notifyFailed(t);
        Throwables.propagate(t);
    }
}
 
源代码2 项目: simulacron   文件: ChannelUtils.java
public static CompletableFuture<Void> completable(ChannelGroupFuture future) {
  CompletableFuture<Void> cf = new CompletableFuture<>();
  future.addListener(
      (ChannelGroupFutureListener)
          future1 -> {
            if (future1.isSuccess()) {
              cf.complete(null);
            } else {
              cf.completeExceptionally(future1.cause());
            }
          });
  return cf;
}
 
源代码3 项目: NettyReverseProxy   文件: ProxyFrontendHandler.java
/**
 * 在这里接收客户端的消息 在客户端和代理服务器建立连接时,也获得了代理服务器和目标服务器的通道outbound,
 * 通过outbound写入消息到目标服务器
 *
 * @param ctx
 * @param msg
 * @throws Exception
 */
@Override
public void channelRead0(final ChannelHandlerContext ctx, byte[] msg) throws Exception {

    log.info("客户端消息");
    allChannels.writeAndFlush(msg).addListener(new ChannelGroupFutureListener() {
        @Override
        public void operationComplete(ChannelGroupFuture future) throws Exception {
            //防止出现发送不成功造成的永久不读取消息的错误.
            ctx.channel().read();
        }
    });
}
 
源代码4 项目: ffwd   文件: NettyDebugServer.java
public AsyncFuture<Void> stop() {
    final Channel server = this.server.getAndSet(null);

    if (server == null) {
        throw new IllegalStateException("server not started");
    }

    final ResolvableFuture<Void> serverClose = async.future();

    server.close().addListener((ChannelFutureListener) f -> {
        if (!f.isSuccess()) {
            serverClose.fail(f.cause());
            return;
        }

        serverClose.resolve(null);
    });

    final ResolvableFuture<Void> channelGroupClose = async.future();

    connected.close().addListener((ChannelGroupFutureListener) f -> {
        if (!f.isSuccess()) {
            channelGroupClose.fail(f.cause());
            return;
        }

        channelGroupClose.resolve(null);
    });

    return async.collectAndDiscard(
        ImmutableList.<AsyncFuture<Void>>of(serverClose, channelGroupClose));
}
 
 类所在包
 同包方法