/** * Shuts down this channel pool and releases all retained resources. * * @return a {@code Future} that will be completed when all resources held by this pool have been released */ public Future<Void> close() { return this.allChannels.close().addListener(new GenericFutureListener<Future<Void>>() { @Override public void operationComplete(final Future<Void> future) throws Exception { ApnsChannelPool.this.isClosed = true; if (ApnsChannelPool.this.channelFactory instanceof Closeable) { ((Closeable) ApnsChannelPool.this.channelFactory).close(); } for (final Promise<Channel> acquisitionPromise : ApnsChannelPool.this.pendingAcquisitionPromises) { acquisitionPromise.tryFailure(POOL_CLOSED_EXCEPTION); } } }); } }
private void actualClose(final ContextInternal closeContext, final Handler<AsyncResult<Void>> done) { if (id != null) { vertx.sharedHttpServers().remove(id); } ContextInternal currCon = vertx.getContext(); for (ConnectionBase conn : connectionMap.values()) { conn.close(); } // Sanity check if (vertx.getContext() != currCon) { throw new IllegalStateException("Context was changed"); } if (metrics != null) { metrics.close(); } ChannelGroupFuture fut = serverChannelGroup.close(); fut.addListener(cgf -> executeCloseDone(closeContext, done, fut.cause())); }
private void actualClose(ContextInternal closeContext, Handler<AsyncResult<Void>> done) { if (id != null) { vertx.sharedNetServers().remove(id); } ContextInternal currCon = vertx.getContext(); for (NetSocketImpl sock : socketMap.values()) { sock.close(); } // Sanity check if (vertx.getContext() != currCon) { throw new IllegalStateException("Context was changed"); } ChannelGroupFuture fut = serverChannelGroup.close(); fut.addListener(cg -> { if (metrics != null) { metrics.close(); } executeCloseDone(closeContext, done, fut.cause()); }); }
ChannelGroupFuture allChannelsCloseFuture = allChannels.close(); if (workerGroup != null) { allChannelsCloseFuture.addListener(future -> { workerGroup.shutdownGracefully(); });
@Override public <T> Flowable<T> broadcast(T message, MediaType mediaType, Predicate<WebSocketSession> filter) { return Flowable.create(emitter -> { try { WebSocketFrame frame = webSocketMessageEncoder.encodeMessage(message, mediaType); webSocketSessionRepository.getChannelGroup().writeAndFlush(frame, ch -> { Attribute<NettyRxWebSocketSession> attr = ch.attr(NettyRxWebSocketSession.WEB_SOCKET_SESSION_KEY); NettyRxWebSocketSession s = attr.get(); return s != null && s.isOpen() && filter.test(s); }).addListener(future -> { if (future.isSuccess()) { emitter.onNext(message); emitter.onComplete(); } else { Throwable cause = future.cause(); emitter.onError(new WebSocketSessionException("Broadcast Failure: " + cause.getMessage(), cause)); } }); } catch (Throwable e) { emitter.onError(new WebSocketSessionException("Broadcast Failure: " + e.getMessage(), e)); } }, BackpressureStrategy.BUFFER); } }
channelsFuture.addListener(new FutureListener<Void>() { @Override public void operationComplete(Future<Void> future) throws Exception {
channelsFuture.addListener(new FutureListener<Void>() { @Override public void operationComplete(Future<Void> future) throws Exception {
private void actualClose(final ContextInternal closeContext, final Handler<AsyncResult<Void>> done) { if (id != null) { vertx.sharedHttpServers().remove(id); } ContextInternal currCon = vertx.getContext(); for (ConnectionBase conn : connectionMap.values()) { conn.close(); } // Sanity check if (vertx.getContext() != currCon) { throw new IllegalStateException("Context was changed"); } if (metrics != null) { metrics.close(); } ChannelGroupFuture fut = serverChannelGroup.close(); fut.addListener(cgf -> executeCloseDone(closeContext, done, fut.cause())); }
private void actualClose(ContextInternal closeContext, Handler<AsyncResult<Void>> done) { if (id != null) { vertx.sharedNetServers().remove(id); } ContextInternal currCon = vertx.getContext(); for (NetSocketImpl sock : socketMap.values()) { sock.close(); } // Sanity check if (vertx.getContext() != currCon) { throw new IllegalStateException("Context was changed"); } ChannelGroupFuture fut = serverChannelGroup.close(); fut.addListener(cg -> { if (metrics != null) { metrics.close(); } executeCloseDone(closeContext, done, fut.cause()); }); }
@Override public void stop(Consumer<Throwable> doneHandler) { GenericFutureListener<Future<Object>> adapter = (Future<Object> future) -> { doneHandler.accept(future.cause()); }; channelGroup.close().addListener(adapter); group.shutdownGracefully(); } }
public void stop(Consumer<Throwable> doneHandler) { if (channel != null) { channel.close(); } channelGroup.close().addListener((Future<Void> f) -> doneHandler.accept(f.cause())); }
public void stop(Consumer<Throwable> doneHandler) { if (channel != null) { channel.close(); } channelGroup.close().addListener((Future<Void> f) -> doneHandler.accept(f.cause())); }
@Override public void stop(Consumer<Throwable> doneHandler) { GenericFutureListener<Future<Object>> adapter = (Future<Object> future) -> { doneHandler.accept(future.cause()); }; channelGroup.close().addListener(adapter); group.shutdownGracefully(); } }
@Override public CompletableFuture<Void> close() { int i = 0; CompletableFuture<?>[] futures = new CompletableFuture[connections.size()]; for (Connection connection : connections.values()) { futures[i++] = connection.close(); } CompletableFuture<Void> future = new CompletableFuture<>(); CompletableFuture.allOf(futures).whenComplete((result, error) -> { channelGroup.close().addListener(channelFuture -> { future.complete(null); }); }); return future; }
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; } }
@Override protected CloseFuture doCloseGracefully() { channelGroup.close().addListener(fut -> closeFuture.setClosed()); return closeFuture; }
@Override protected CloseFuture doCloseGracefully() { channelGroup.close().addListener(fut -> closeFuture.setClosed()); return closeFuture; }
@Override protected CloseFuture doCloseGracefully() { channelGroup.close().addListener(fut -> closeFuture.setClosed()); return closeFuture; }
@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); } }
private void closeClients(Promise<Void> clientsFuture) { log.info("Active Clients: {}",clientChannelGroup.size()); clientChannelGroup.closeIddleChannels(); clientChannelGroup.newCloseFuture().addListener(f->clientsFuture.setSuccess(null)); }