List of usage examples for io.netty.channel ChannelFutureListener ChannelFutureListener
ChannelFutureListener
From source file:io.reactivex.netty.protocol.http.MultipleFutureListener.java
License:Apache License
public MultipleFutureListener(final ChannelPromise completionPromise) { if (null == completionPromise) { throw new NullPointerException("Promise can not be null."); }/*w ww . ja va 2 s. c o m*/ this.completionPromise = completionPromise; completionObservable = Observable.create(new Observable.OnSubscribe<Void>() { @Override public void call(final Subscriber<? super Void> subscriber) { MultipleFutureListener.this.completionPromise.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { if (future.isSuccess()) { subscriber.onCompleted(); } else { subscriber.onError(future.cause()); } } }); } }); }
From source file:io.reactivex.netty.protocol.http.server.ServerRequestResponseConverter.java
License:Apache License
private void addWriteCompleteEvents(ChannelPromise promise, final long startTimeMillis, final HttpServerMetricsEvent<HttpServerMetricsEvent.EventType> successEvent, final HttpServerMetricsEvent<HttpServerMetricsEvent.EventType> failureEvent) { promise.addListener(new ChannelFutureListener() { @Override/* w ww . j a v a2 s.co m*/ public void operationComplete(ChannelFuture future) throws Exception { if (future.isSuccess()) { eventsSubject.onEvent(successEvent, Clock.onEndMillis(startTimeMillis)); } else { eventsSubject.onEvent(failureEvent, Clock.onEndMillis(startTimeMillis), future.cause()); } } }); }
From source file:io.reactivex.netty.protocol.http.websocket.WebSocketServerHandler.java
License:Apache License
@Override public void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof FullHttpRequest) { ChannelFuture upgradeFuture = handleHttpRequest(ctx, (FullHttpRequest) msg); if (upgradeFuture != null) { updatePipeline(ctx);// ww w . j a v a2s . co m upgradeFuture.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { if (future.isSuccess()) { handshakeFuture.setSuccess(); eventsSubject.onEvent(WebSocketServerMetricsEvent.HANDSHAKE_PROCESSED); } else { handshakeFuture.setFailure(future.cause()); eventsSubject.onEvent(WebSocketServerMetricsEvent.HANDSHAKE_FAILURE); } } }); } } else { ctx.fireChannelRead(msg); } }
From source file:io.reactivex.netty.util.MultipleFutureListener.java
License:Apache License
public MultipleFutureListener(final ChannelPromise completionPromise) { if (null == completionPromise) { throw new NullPointerException("Promise can not be null."); }//from ww w . j a v a 2s . c o m this.completionPromise = completionPromise; completionObservable = Observable.create(new Observable.OnSubscribe<Void>() { @Override public void call(final Subscriber<? super Void> subscriber) { if (listeningToCount.get() == 0) { MultipleFutureListener.this.completionPromise.trySuccess(); } MultipleFutureListener.this.completionPromise.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { if (future.isSuccess()) { subscriber.onCompleted(); } else { subscriber.onError(future.cause()); } } }); } }); }
From source file:io.scalecube.socketio.pipeline.WebSocketHandler.java
License:Apache License
private boolean handshake(final ChannelHandlerContext ctx, final FullHttpRequest req, final String requestPath) { WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory(getWebSocketLocation(req), null, false, maxWebSocketFrameSize); WebSocketServerHandshaker handshaker = wsFactory.newHandshaker(req); if (handshaker != null) { handshaker.handshake(ctx.channel(), req).addListener(new ChannelFutureListener() { @Override// ww w . ja v a 2 s.c om public void operationComplete(ChannelFuture future) throws Exception { if (future.isSuccess()) { final String sessionId = PipelineUtils.getSessionId(requestPath); connect(ctx, req, sessionId); } } }); return true; } else { WebSocketServerHandshakerFactory.sendUnsupportedVersionResponse(ctx.channel()); } return false; }
From source file:io.urmia.proxy.DirectWriteBackHttpProxyBackendHandler.java
License:Open Source License
@Override public void channelRead(final ChannelHandlerContext ctx, Object msg) throws Exception { inboundChannel.writeAndFlush(msg).addListener(new ChannelFutureListener() { @Override//from ww w .j a va 2 s . com public void operationComplete(ChannelFuture future) throws Exception { if (future.isSuccess()) { //log.info("success on write back to inbound"); ctx.channel().read(); } else { log.warn("fail on write to back to inbound: {}", future.cause()); future.channel().close(); } } }); }
From source file:io.vertx.core.dns.impl.fix.DnsNameResolver.java
License:Apache License
/** * Creates a new DNS-based name resolver that communicates with the specified list of DNS servers. * * @param eventLoop the {@link EventLoop} which will perform the communication with the DNS servers * @param channelFactory the {@link ChannelFactory} that will create a {@link DatagramChannel} * @param nameServerAddresses the addresses of the DNS server. For each DNS query, a new stream is created from * this to determine which DNS server should be contacted for the next retry in case * of failure. * @param resolveCache the DNS resolved entries cache * @param queryTimeoutMillis timeout of each DNS query in millis * @param resolvedAddressTypes list of the protocol families * @param recursionDesired if recursion desired flag must be set * @param maxQueriesPerResolve the maximum allowed number of DNS queries for a given name resolution * @param traceEnabled if trace is enabled * @param maxPayloadSize the capacity of the datagram packet buffer * @param optResourceEnabled if automatic inclusion of a optional records is enabled * @param hostsFileEntriesResolver the {@link HostsFileEntriesResolver} used to check for local aliases * @param searchDomains TODO//from w w w.ja v a 2 s. c om * @param ndots TODO */ public DnsNameResolver(EventLoop eventLoop, ChannelFactory<? extends DatagramChannel> channelFactory, DnsServerAddresses nameServerAddresses, DnsCache resolveCache, long queryTimeoutMillis, InternetProtocolFamily[] resolvedAddressTypes, boolean recursionDesired, int maxQueriesPerResolve, boolean traceEnabled, int maxPayloadSize, boolean optResourceEnabled, HostsFileEntriesResolver hostsFileEntriesResolver, List<String> searchDomains, int ndots) { super(eventLoop); checkNotNull(channelFactory, "channelFactory"); this.nameServerAddresses = checkNotNull(nameServerAddresses, "nameServerAddresses"); this.queryTimeoutMillis = checkPositive(queryTimeoutMillis, "queryTimeoutMillis"); this.resolvedAddressTypes = checkNonEmpty(resolvedAddressTypes, "resolvedAddressTypes"); this.recursionDesired = recursionDesired; this.maxQueriesPerResolve = checkPositive(maxQueriesPerResolve, "maxQueriesPerResolve"); this.traceEnabled = traceEnabled; this.maxPayloadSize = checkPositive(maxPayloadSize, "maxPayloadSize"); this.optResourceEnabled = optResourceEnabled; this.hostsFileEntriesResolver = checkNotNull(hostsFileEntriesResolver, "hostsFileEntriesResolver"); this.resolveCache = resolveCache; this.searchDomains = checkNotNull(searchDomains, "searchDomains"); this.ndots = checkPositive(ndots, "ndots"); Bootstrap b = new Bootstrap(); b.group(executor()); b.channelFactory(channelFactory); b.option(ChannelOption.DATAGRAM_CHANNEL_ACTIVE_ON_REGISTRATION, true); final DnsResponseHandler responseHandler = new DnsResponseHandler(executor().<Channel>newPromise()); b.handler(new ChannelInitializer<DatagramChannel>() { @Override protected void initChannel(DatagramChannel ch) throws Exception { ch.pipeline().addLast(DECODER, ENCODER, responseHandler); } }); channelFuture = responseHandler.channelActivePromise; ch = (DatagramChannel) b.register().channel(); ch.config().setRecvByteBufAllocator(new FixedRecvByteBufAllocator(maxPayloadSize)); ch.closeFuture().addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { resolveCache.clear(); } }); }
From source file:io.vertx.core.dns.impl.fix.DnsQueryContext.java
License:Apache License
private void writeQuery(final DnsQuery query) { final ChannelFuture writeFuture = parent.ch.writeAndFlush(query); if (writeFuture.isDone()) { onQueryWriteCompletion(writeFuture); } else {/*from www.ja v a 2 s . com*/ writeFuture.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { onQueryWriteCompletion(writeFuture); } }); } }
From source file:io.vertx.core.http.impl.ServerConnection.java
License:Open Source License
NetSocket createNetSocket() { NetSocketImpl socket = new NetSocketImpl(vertx, channel, context, server.getSslHelper(), metrics); socket.metric(metric());/*from w ww .j a va 2 s .c om*/ Map<Channel, NetSocketImpl> connectionMap = new HashMap<>(1); connectionMap.put(channel, socket); // Flush out all pending data endReadAndFlush(); // remove old http handlers and replace the old handler with one that handle plain sockets ChannelPipeline pipeline = channel.pipeline(); ChannelHandler compressor = pipeline.get(HttpChunkContentCompressor.class); if (compressor != null) { pipeline.remove(compressor); } pipeline.remove("httpDecoder"); if (pipeline.get("chunkedWriter") != null) { pipeline.remove("chunkedWriter"); } channel.pipeline().replace("handler", "handler", new VertxNetHandler<NetSocketImpl>(channel, socket, connectionMap) { @Override public void exceptionCaught(ChannelHandlerContext chctx, Throwable t) throws Exception { // remove from the real mapping server.removeChannel(channel); super.exceptionCaught(chctx, t); } @Override public void channelInactive(ChannelHandlerContext chctx) throws Exception { // remove from the real mapping server.removeChannel(channel); super.channelInactive(chctx); } @Override public void channelRead(ChannelHandlerContext chctx, Object msg) throws Exception { if (msg instanceof HttpContent) { ReferenceCountUtil.release(msg); return; } super.channelRead(chctx, msg); } @Override protected void handleMsgReceived(NetSocketImpl conn, Object msg) { ByteBuf buf = (ByteBuf) msg; conn.handleDataReceived(Buffer.buffer(buf)); } }); // check if the encoder can be removed yet or not. if (lastWriteFuture == null) { channel.pipeline().remove("httpEncoder"); } else { lastWriteFuture.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { channel.pipeline().remove("httpEncoder"); } }); } return socket; }
From source file:io.viewserver.network.netty.NettyNetworkAdapter.java
License:Apache License
@Override public ListenableFuture<IChannel> connect(IEndpoint endpoint) { SettableFuture<IChannel> promise = SettableFuture.create(); final INettyEndpoint.IClient client = ((INettyEndpoint) endpoint).getClient(getClientWorkerGroup(), new NettyPipelineInitialiser(networkMessageWheel)); ChannelFuture channelFuture = client.connect(); channelFuture.addListener(new ChannelFutureListener() { @Override/* www. j ava 2 s . co m*/ public void operationComplete(ChannelFuture future) throws Exception { if (future.isSuccess()) { NettyChannel channel = new NettyChannel(future.channel()); promise.set(channel); } else { promise.setException(future.cause()); } } }); return promise; }