Search in sources :

Example 36 with Future

use of org.apache.flink.shaded.netty4.io.netty.util.concurrent.Future in project netty by netty.

the class ReentrantChannelTest method testCloseInFlush.

@Test
public void testCloseInFlush() throws Exception {
    LocalAddress addr = new LocalAddress("testCloseInFlush");
    ServerBootstrap sb = getLocalServerBootstrap();
    sb.bind(addr).sync().channel();
    Bootstrap cb = getLocalClientBootstrap();
    setInterest(Event.WRITE, Event.FLUSH, Event.CLOSE, Event.EXCEPTION);
    Channel clientChannel = cb.connect(addr).sync().channel();
    clientChannel.pipeline().addLast(new ChannelOutboundHandlerAdapter() {

        @Override
        public void write(final ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
            promise.addListener(new GenericFutureListener<Future<? super Void>>() {

                @Override
                public void operationComplete(Future<? super Void> future) throws Exception {
                    ctx.channel().close();
                }
            });
            super.write(ctx, msg, promise);
            ctx.channel().flush();
        }
    });
    clientChannel.write(createTestBuf(2000)).sync();
    clientChannel.closeFuture().sync();
    assertLog("WRITE\nFLUSH\nCLOSE\n");
}
Also used : LocalAddress(io.netty.channel.local.LocalAddress) ServerBootstrap(io.netty.bootstrap.ServerBootstrap) ClosedChannelException(java.nio.channels.ClosedChannelException) Bootstrap(io.netty.bootstrap.Bootstrap) ServerBootstrap(io.netty.bootstrap.ServerBootstrap) Future(io.netty.util.concurrent.Future) GenericFutureListener(io.netty.util.concurrent.GenericFutureListener) Test(org.junit.jupiter.api.Test)

Example 37 with Future

use of org.apache.flink.shaded.netty4.io.netty.util.concurrent.Future in project hive by apache.

the class TestRpc method testRpcServerMultiThread.

@Test
public void testRpcServerMultiThread() throws Exception {
    final RpcServer server = autoClose(new RpcServer(emptyConfig, hiveConf));
    final String msg = "Hello World!";
    Callable<String> callable = () -> {
        Rpc[] rpcs = createRpcConnection(server, emptyConfig, UUID.randomUUID().toString());
        Rpc rpc;
        if (ThreadLocalRandom.current().nextBoolean()) {
            rpc = rpcs[0];
        } else {
            rpc = rpcs[1];
        }
        TestMessage outbound = new TestMessage("Hello World!");
        Future<TestMessage> call = rpc.call(outbound, TestMessage.class);
        TestMessage reply = call.get(10, TimeUnit.SECONDS);
        return reply.message;
    };
    final int numThreads = ThreadLocalRandom.current().nextInt(5) + 5;
    ExecutorService executor = Executors.newFixedThreadPool(numThreads);
    List<java.util.concurrent.Future<String>> futures = new ArrayList<>(numThreads);
    for (int i = 0; i < numThreads; i++) {
        futures.add(executor.submit(callable));
    }
    executor.shutdown();
    for (java.util.concurrent.Future<String> future : futures) {
        assertEquals(msg, future.get());
    }
}
Also used : ArrayList(java.util.ArrayList) ExecutorService(java.util.concurrent.ExecutorService) Future(io.netty.util.concurrent.Future) Test(org.junit.Test)

Example 38 with Future

use of org.apache.flink.shaded.netty4.io.netty.util.concurrent.Future in project web3sdk by FISCO-BCOS.

the class ChannelConnections method reconnect.

public void reconnect() {
    List<ConnectionInfo> connectionInfoList = new ArrayList<>();
    int aliveConnectionCount = 0;
    for (ConnectionInfo connectionInfo : connections) {
        String peer = connectionInfo.getHost() + ":" + connectionInfo.getPort();
        ChannelHandlerContext ctx = networkConnections.get(peer);
        if (Objects.isNull(ctx) || !ctx.channel().isActive()) {
            connectionInfoList.add(connectionInfo);
        } else {
            aliveConnectionCount += 1;
        }
    }
    logger.trace(" Keep alive nodes count: {}", aliveConnectionCount);
    for (ConnectionInfo connectionInfo : connectionInfoList) {
        logger.debug(" try reconnect to {}:{}", connectionInfo.getHost(), connectionInfo.getPort());
        bootstrap.connect(connectionInfo.getHost(), connectionInfo.getPort()).addListener((ChannelFutureListener) future -> {
            if (future.isSuccess()) {
                logger.trace(" reconnect to {}:{} success", connectionInfo.getHost(), connectionInfo.getPort());
            } else {
                logger.error(" reconnect to {}:{}, error: {}", connectionInfo.getHost(), connectionInfo.getPort(), future.cause().getMessage());
            }
        });
    }
}
Also used : Tuple2(org.fisco.bcos.web3j.tuples.generated.Tuple2) LoggerFactory(org.slf4j.LoggerFactory) Tuple3(org.fisco.bcos.web3j.tuples.generated.Tuple3) Random(java.util.Random) SecureRandom(java.security.SecureRandom) PathMatchingResourcePatternResolver(org.springframework.core.io.support.PathMatchingResourcePatternResolver) Map(java.util.Map) BigInteger(java.math.BigInteger) SocketChannel(io.netty.channel.socket.SocketChannel) Resource(org.springframework.core.io.Resource) ThreadPoolTaskExecutor(org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor) ChannelInitializer(io.netty.channel.ChannelInitializer) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) SMSslClientContextFactory(io.netty.handler.ssl.SMSslClientContextFactory) ScheduledThreadPoolExecutor(java.util.concurrent.ScheduledThreadPoolExecutor) NioEventLoopGroup(io.netty.channel.nio.NioEventLoopGroup) Objects(java.util.Objects) List(java.util.List) SSLException(javax.net.ssl.SSLException) SslHandler(io.netty.handler.ssl.SslHandler) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) Optional(java.util.Optional) NioSocketChannel(io.netty.channel.socket.nio.NioSocketChannel) ChannelOption(io.netty.channel.ChannelOption) InvalidKeySpecException(java.security.spec.InvalidKeySpecException) ArrayList(java.util.ArrayList) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) ByteBuf(io.netty.buffer.ByteBuf) ChannelFutureListener(io.netty.channel.ChannelFutureListener) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) EncryptType(org.fisco.bcos.web3j.crypto.EncryptType) LengthFieldBasedFrameDecoder(io.netty.handler.codec.LengthFieldBasedFrameDecoder) EventLoopGroup(io.netty.channel.EventLoopGroup) Logger(org.slf4j.Logger) SslContext(io.netty.handler.ssl.SslContext) NetUtil(io.netty.util.NetUtil) IOException(java.io.IOException) CertificateException(java.security.cert.CertificateException) Host(org.fisco.bcos.web3j.utils.Host) ChannelFuture(io.netty.channel.ChannelFuture) Channel(io.netty.channel.Channel) TimeUnit(java.util.concurrent.TimeUnit) Bootstrap(io.netty.bootstrap.Bootstrap) IdleStateHandler(io.netty.handler.timeout.IdleStateHandler) Inet6Address(java.net.Inet6Address) SslProvider(io.netty.handler.ssl.SslProvider) ServerBootstrap(io.netty.bootstrap.ServerBootstrap) SslContextBuilder(io.netty.handler.ssl.SslContextBuilder) Future(io.netty.util.concurrent.Future) NoSuchProviderException(java.security.NoSuchProviderException) ArrayList(java.util.ArrayList) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext)

Example 39 with Future

use of org.apache.flink.shaded.netty4.io.netty.util.concurrent.Future in project thingsboard by thingsboard.

the class MqttClientImpl method createSubscription.

private Future<Void> createSubscription(String topic, MqttHandler handler, boolean once, MqttQoS qos) {
    if (this.pendingSubscribeTopics.contains(topic)) {
        Optional<Map.Entry<Integer, MqttPendingSubscription>> subscriptionEntry = this.pendingSubscriptions.entrySet().stream().filter((e) -> e.getValue().getTopic().equals(topic)).findAny();
        if (subscriptionEntry.isPresent()) {
            subscriptionEntry.get().getValue().addHandler(handler, once);
            return subscriptionEntry.get().getValue().getFuture();
        }
    }
    if (this.serverSubscriptions.contains(topic)) {
        MqttSubscription subscription = new MqttSubscription(topic, handler, once);
        this.subscriptions.put(topic, subscription);
        this.handlerToSubscribtion.put(handler, subscription);
        return this.channel.newSucceededFuture();
    }
    Promise<Void> future = new DefaultPromise<>(this.eventLoop.next());
    MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.SUBSCRIBE, false, MqttQoS.AT_LEAST_ONCE, false, 0);
    MqttTopicSubscription subscription = new MqttTopicSubscription(topic, qos);
    MqttMessageIdVariableHeader variableHeader = getNewMessageId();
    MqttSubscribePayload payload = new MqttSubscribePayload(Collections.singletonList(subscription));
    MqttSubscribeMessage message = new MqttSubscribeMessage(fixedHeader, variableHeader, payload);
    final MqttPendingSubscription pendingSubscription = new MqttPendingSubscription(future, topic, message, () -> !pendingSubscriptions.containsKey(variableHeader.messageId()));
    pendingSubscription.addHandler(handler, once);
    this.pendingSubscriptions.put(variableHeader.messageId(), pendingSubscription);
    this.pendingSubscribeTopics.add(topic);
    // If not sent, we will send it when the connection is opened
    pendingSubscription.setSent(this.sendAndFlushPacket(message) != null);
    pendingSubscription.startRetransmitTimer(this.eventLoop.next(), this::sendAndFlushPacket);
    return future;
}
Also used : MqttDecoder(io.netty.handler.codec.mqtt.MqttDecoder) MqttFixedHeader(io.netty.handler.codec.mqtt.MqttFixedHeader) MqttQoS(io.netty.handler.codec.mqtt.MqttQoS) MqttPublishVariableHeader(io.netty.handler.codec.mqtt.MqttPublishVariableHeader) MqttMessageType(io.netty.handler.codec.mqtt.MqttMessageType) MqttMessage(io.netty.handler.codec.mqtt.MqttMessage) MqttUnsubscribePayload(io.netty.handler.codec.mqtt.MqttUnsubscribePayload) MqttSubscribePayload(io.netty.handler.codec.mqtt.MqttSubscribePayload) ConcurrentMap(java.util.concurrent.ConcurrentMap) HashSet(java.util.HashSet) HashMultimap(com.google.common.collect.HashMultimap) ByteBuf(io.netty.buffer.ByteBuf) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) MqttEncoder(io.netty.handler.codec.mqtt.MqttEncoder) ChannelFutureListener(io.netty.channel.ChannelFutureListener) Map(java.util.Map) BiConsumer(java.util.function.BiConsumer) SocketChannel(io.netty.channel.socket.SocketChannel) ImmutableSet(com.google.common.collect.ImmutableSet) EventLoopGroup(io.netty.channel.EventLoopGroup) MqttPublishMessage(io.netty.handler.codec.mqtt.MqttPublishMessage) ChannelInitializer(io.netty.channel.ChannelInitializer) MqttSubscribeMessage(io.netty.handler.codec.mqtt.MqttSubscribeMessage) SslContext(io.netty.handler.ssl.SslContext) Promise(io.netty.util.concurrent.Promise) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) MqttTopicSubscription(io.netty.handler.codec.mqtt.MqttTopicSubscription) NioEventLoopGroup(io.netty.channel.nio.NioEventLoopGroup) ChannelFuture(io.netty.channel.ChannelFuture) Channel(io.netty.channel.Channel) TimeUnit(java.util.concurrent.TimeUnit) Bootstrap(io.netty.bootstrap.Bootstrap) IdleStateHandler(io.netty.handler.timeout.IdleStateHandler) DefaultPromise(io.netty.util.concurrent.DefaultPromise) MqttUnsubscribeMessage(io.netty.handler.codec.mqtt.MqttUnsubscribeMessage) Optional(java.util.Optional) MqttMessageIdVariableHeader(io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) Future(io.netty.util.concurrent.Future) Collections(java.util.Collections) MqttFixedHeader(io.netty.handler.codec.mqtt.MqttFixedHeader) MqttSubscribeMessage(io.netty.handler.codec.mqtt.MqttSubscribeMessage) MqttMessageIdVariableHeader(io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader) DefaultPromise(io.netty.util.concurrent.DefaultPromise) MqttTopicSubscription(io.netty.handler.codec.mqtt.MqttTopicSubscription) MqttSubscribePayload(io.netty.handler.codec.mqtt.MqttSubscribePayload)

Example 40 with Future

use of org.apache.flink.shaded.netty4.io.netty.util.concurrent.Future in project reactor-netty by reactor.

the class FutureMonoTest method testDeferredFutureMonoImmediate.

@Test
void testDeferredFutureMonoImmediate() {
    ImmediateEventExecutor eventExecutor = ImmediateEventExecutor.INSTANCE;
    Supplier<Future<Void>> promiseSupplier = () -> eventExecutor.newFailedFuture(new ClosedChannelException());
    StepVerifier.create(FutureMono.deferFuture(promiseSupplier)).expectError(AbortedException.class).verify(Duration.ofSeconds(30));
}
Also used : ImmediateEventExecutor(io.netty.util.concurrent.ImmediateEventExecutor) ClosedChannelException(java.nio.channels.ClosedChannelException) AbortedException(reactor.netty.channel.AbortedException) Future(io.netty.util.concurrent.Future) Test(org.junit.jupiter.api.Test)

Aggregations

Future (io.netty.util.concurrent.Future)177 Channel (io.netty.channel.Channel)61 ChannelFuture (io.netty.channel.ChannelFuture)58 InetSocketAddress (java.net.InetSocketAddress)45 ArrayList (java.util.ArrayList)45 IOException (java.io.IOException)44 GenericFutureListener (io.netty.util.concurrent.GenericFutureListener)42 CompletableFuture (java.util.concurrent.CompletableFuture)40 NioEventLoopGroup (io.netty.channel.nio.NioEventLoopGroup)35 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)34 List (java.util.List)34 ChannelFutureListener (io.netty.channel.ChannelFutureListener)31 EventLoopGroup (io.netty.channel.EventLoopGroup)30 NioSocketChannel (io.netty.channel.socket.nio.NioSocketChannel)30 FutureListener (io.netty.util.concurrent.FutureListener)28 Logger (org.slf4j.Logger)28 LoggerFactory (org.slf4j.LoggerFactory)28 TimeUnit (java.util.concurrent.TimeUnit)27 Bootstrap (io.netty.bootstrap.Bootstrap)25 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)25