Java Code Examples for io.netty.channel.EventLoop#schedule()

The following examples show how to use io.netty.channel.EventLoop#schedule() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: OFConnectionHandler.java    From onos with Apache License 2.0 6 votes vote down vote up
@Override
public void operationComplete(ChannelFuture future) throws Exception {
    if (future.isSuccess()) {
        log.info(String.format(MSG_STATE,
                ofSwitch.dpid(),
                MSG_CONNECTED,
                controller.ip(),
                controller.port()));
        // FIXME add close future listener to handle connection lost
    } else {
        if (retryCount.getAndIncrement() > MAX_RETRY) {
            log.warn(String.format(MSG_STATE,
                    ofSwitch.dpid(),
                    MSG_FAILED,
                    controller.ip(),
                    controller.port()));
        } else {
            final EventLoop loop = future.channel().eventLoop();
            loop.schedule(this::connect, 1L, TimeUnit.SECONDS);
        }
    }
}
 
Example 2
Source File: Controller.java    From onos with Apache License 2.0 6 votes vote down vote up
@Override
public void operationComplete(ChannelFuture channelFuture) throws Exception {
    if (!channelFuture.isSuccess()) {
        channelFuture.channel().close();

        if (count.incrementAndGet() < MAX_RETRY) {
            final EventLoop loop = channelFuture.channel().eventLoop();

            loop.schedule(() -> {
                try {
                    controller.connectRetry(this.ip, this.port, this);
                } catch (Exception e) {
                    log.warn("Connection to the ovsdb server {}:{} failed(cause: {})", ip, port, e);
                }
            }, 1L, TimeUnit.SECONDS);
        } else {
            failhandler.accept(new Exception("max connection retry(" + MAX_RETRY + ") exceeded"));
        }
    } else {
        handleNewNodeConnection(channelFuture.channel());
    }
}
 
Example 3
Source File: DefaultClientChannelInboundHandler.java    From hermes with Apache License 2.0 6 votes vote down vote up
@Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
	log.info("Disconnected from broker(addr={})", NettyUtils.parseChannelRemoteAddr(ctx.channel()));

	if (!m_endpointChannel.isClosed()) {
		m_endpointChannel.setChannelFuture(null);
		final EventLoop loop = ctx.channel().eventLoop();
		loop.schedule(new Runnable() {
			@Override
			public void run() {
				log.info("Reconnecting to broker({}:{})", m_endpoint.getHost(), m_endpoint.getPort());
				m_endpointClient.connect(m_endpoint, m_endpointChannel);
			}
		}, m_config.getEndpointChannelAutoReconnectDelay(), TimeUnit.SECONDS);
	}
	super.channelInactive(ctx);
}
 
Example 4
Source File: BGPProtocolSessionPromise.java    From bgpcep with Eclipse Public License 1.0 6 votes vote down vote up
synchronized void reconnect() {
    if (this.retryTimer == 0) {
        LOG.debug("Retry timer value is 0. Reconnection will not be attempted");
        this.setFailure(this.pending.cause());
        return;
    }

    final EventLoop loop = this.pending.channel().eventLoop();
    loop.schedule(() -> {
        synchronized (BGPProtocolSessionPromise.this) {
            if (BGPProtocolSessionPromise.this.peerSessionPresent) {
                LOG.debug("Connection to {} already exists", BGPProtocolSessionPromise.this.address);
                BGPProtocolSessionPromise.this.connectSkipped = true;
                return;
            }

            BGPProtocolSessionPromise.this.connectSkipped = false;
            LOG.debug("Attempting to connect to {}", BGPProtocolSessionPromise.this.address);
            final ChannelFuture reconnectFuture = BGPProtocolSessionPromise.this.bootstrap.connect();
            reconnectFuture.addListener(new BootstrapConnectListener());
            BGPProtocolSessionPromise.this.pending = reconnectFuture;
        }
    }, this.retryTimer, TimeUnit.SECONDS);
    LOG.debug("Next reconnection attempt in {}s", this.retryTimer);
}
 
Example 5
Source File: KeepAliveHandler.java    From armeria with Apache License 2.0 6 votes vote down vote up
@Override
public void operationComplete(ChannelFuture future) throws Exception {
    if (future.isSuccess()) {
        logger.debug("{} PING write successful", channel);
        final EventLoop el = channel.eventLoop();
        shutdownFuture = el.schedule(shutdownRunnable, pingIdleTimeNanos, TimeUnit.NANOSECONDS);
        pingState = PingState.PENDING_PING_ACK;
        resetStopwatch();
    } else {
        // Mostly because the channel is already closed. So ignore and change state to IDLE.
        // If the channel is closed, we change state to SHUTDOWN on destroy.
        if (!future.isCancelled() && Exceptions.isExpected(future.cause())) {
            logger.debug("{} PING write failed", channel, future.cause());
        }
        if (pingState != PingState.SHUTDOWN) {
            pingState = PingState.IDLE;
        }
    }
}
 
Example 6
Source File: BmpDispatcherImpl.java    From bgpcep with Eclipse Public License 1.0 6 votes vote down vote up
@Override
public void operationComplete(final ChannelFuture future) throws Exception {
    if (future.isCancelled()) {
        LOG.debug("Connection {} cancelled!", future);
    } else if (future.isSuccess()) {
        LOG.debug("Connection {} succeeded!", future);
        future.channel().closeFuture().addListener((ChannelFutureListener) channelFuture -> scheduleConnect());
    } else {
        if (this.delay > MAXIMUM_BACKOFF) {
            LOG.warn("The time of maximum backoff has been exceeded. No further connection attempts with BMP "
                    + "router {}.", this.remoteAddress);
            future.cancel(false);
            return;
        }
        final EventLoop loop = future.channel().eventLoop();
        loop.schedule(() -> this.bootstrap.connect().addListener(this), this.delay, TimeUnit.MILLISECONDS);
        LOG.info("The connection try to BMP router {} failed. Next reconnection attempt in {} milliseconds.",
                this.remoteAddress, this.delay);
        this.delay *= 2;
    }
}
 
Example 7
Source File: ConnectionListener.java    From resp-server with MIT License 5 votes vote down vote up
@Override
public void operationComplete(ChannelFuture future) throws Exception {
  if (!future.isSuccess()) {
    EventLoop eventLoop = future.channel().eventLoop();
    eventLoop.schedule(client::start, 1L, TimeUnit.SECONDS); 
  }
}
 
Example 8
Source File: GraphiteChannelInboundHandler.java    From gruffalo with Apache License 2.0 5 votes vote down vote up
private void scheduleReconnect(final ChannelHandlerContext ctx) {
  final EventLoop loop = ctx.channel().eventLoop();
  loop.schedule(new Runnable() {
    @Override
    public void run() {
      log.info("Reconnecting to {}", graphiteTarget);
      client.connect();
    }
  }, RECONNECT_DELAY_SEC, TimeUnit.SECONDS);
}
 
Example 9
Source File: PCCReconnectPromise.java    From bgpcep with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public void operationComplete(final ChannelFuture cf) {
    synchronized (this.lock) {
        if (PCCReconnectPromise.this.isCancelled()) {
            if (cf.isSuccess()) {
                PCCReconnectPromise.LOG.debug("Closing channels for cancelled promise {}",
                        PCCReconnectPromise.this);
                cf.channel().close();
            }
        } else if (cf.isSuccess()) {
            PCCReconnectPromise.LOG.debug("Promise connection is successful.");
        } else {
            PCCReconnectPromise.LOG.debug("Attempt to connect to {} failed",
                    PCCReconnectPromise.this.address, cf.cause());

            if (PCCReconnectPromise.this.retryTimer == 0) {
                PCCReconnectPromise.LOG.debug("Retry timer value is 0. Reconnection will not be attempted");
                PCCReconnectPromise.this.setFailure(cf.cause());
                return;
            }

            final EventLoop loop = cf.channel().eventLoop();
            loop.schedule(() -> {
                synchronized (PCCReconnectPromise.this) {
                    PCCReconnectPromise.LOG.debug("Attempting to connect to {}",
                            PCCReconnectPromise.this.address);
                    final Future<Void> reconnectFuture = PCCReconnectPromise.this.bootstrap.connect();
                    reconnectFuture.addListener(this);
                    PCCReconnectPromise.this.pending = reconnectFuture;
                }
            }, PCCReconnectPromise.this.retryTimer, TimeUnit.SECONDS);
            PCCReconnectPromise.LOG.debug("Next reconnection attempt in {}s",
                    PCCReconnectPromise.this.retryTimer);
        }
    }
}
 
Example 10
Source File: BmpMockDispatcher.java    From bgpcep with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public void operationComplete(final ChannelFuture future) throws Exception {
    if (future.isCancelled()) {
        LOG.debug("Connection {} cancelled!", future);
    } else if (future.isSuccess()) {
        LOG.debug("Connection {} succeeded!", future);
        future.channel().closeFuture().addListener((ChannelFutureListener) channelFuture -> scheduleConnect());
    } else {
        final EventLoop loop = future.channel().eventLoop();
        loop.schedule(() -> this.bootstrap.connect().addListener(this), this.delay, TimeUnit.MILLISECONDS);
        LOG.info("The connection try to BMP router {} failed. Next reconnection attempt in {} milliseconds.",
                this.remoteAddress, this.delay);
    }
}
 
Example 11
Source File: ClientHandler.java    From High-concurrent-server with Apache License 2.0 5 votes vote down vote up
@Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
	final EventLoop eventLoop = ctx.channel().eventLoop();
	eventLoop.schedule(new Runnable() {
		@Override
		public void run() {
			client.createBootstrap(new Bootstrap(), eventLoop);
		}
	}, 1L, TimeUnit.SECONDS);
	super.channelInactive(ctx);
}
 
Example 12
Source File: RetransmissionHandler.java    From smartacus-mqtt-broker with Apache License 2.0 5 votes vote down vote up
private void startTimer(EventLoop eventLoop){
    this.timer = eventLoop.schedule(() -> {
        this.timeout += 5;
        MqttFixedHeader fixedHeader = new MqttFixedHeader(this.originalMessage.fixedHeader().messageType(), true, this.originalMessage.fixedHeader().qosLevel(), this.originalMessage.fixedHeader().isRetain(), this.originalMessage.fixedHeader().remainingLength());
        handler.accept(fixedHeader, originalMessage);
        startTimer(eventLoop);
    }, timeout, TimeUnit.SECONDS);
}
 
Example 13
Source File: NettyClientServerCommunicationSystemClientSide.java    From library with Apache License 2.0 5 votes vote down vote up
private void scheduleReconnect(final ChannelHandlerContext ctx, int time) {
	if (closed) {
		closeChannelAndEventLoop(ctx.channel());
		return;
	}

	final EventLoop loop = ctx.channel().eventLoop();
	loop.schedule(new Runnable() {
		@Override
		public void run() {
			reconnect(ctx);
		}
	}, time, TimeUnit.SECONDS);
}
 
Example 14
Source File: UptimeClientHandler.java    From netty4.0.27Learn with Apache License 2.0 5 votes vote down vote up
@Override
public void channelUnregistered(final ChannelHandlerContext ctx) throws Exception {
    println("Sleeping for: " + UptimeClient.RECONNECT_DELAY + 's');

    final EventLoop loop = ctx.channel().eventLoop();
    loop.schedule(new Runnable() {
        @Override
        public void run() {
            println("Reconnecting to: " + UptimeClient.HOST + ':' + UptimeClient.PORT);
            UptimeClient.connect(UptimeClient.configureBootstrap(new Bootstrap(), loop));
        }
    }, UptimeClient.RECONNECT_DELAY, TimeUnit.SECONDS);
}
 
Example 15
Source File: NettyClientServerCommunicationSystemClientSide.java    From protect with MIT License 5 votes vote down vote up
private void scheduleReconnect(final ChannelHandlerContext ctx, int time) {
	if (closed) {
		closeChannelAndEventLoop(ctx.channel());
		return;
	}

	final EventLoop loop = ctx.channel().eventLoop();
	loop.schedule(new Runnable() {
		@Override
		public void run() {
			reconnect(ctx);
		}
	}, time, TimeUnit.SECONDS);
}
 
Example 16
Source File: ClientHandler.java    From LuckyFrameClient with GNU Affero General Public License v3.0 5 votes vote down vote up
@Override
public void channelInactive(ChannelHandlerContext ctx) {
    log.info("�����ѶϿ������ڳ�������...");
    //ʹ�ù����ж�������
    final EventLoop eventLoop = ctx.channel().eventLoop();
    eventLoop.schedule(() -> {
        try {
            NettyClient.start();
        } catch (Exception e) {
            log.error("���ӳ����쳣�����ڳ�������...",e);
        }
    }, 1, TimeUnit.SECONDS);

    ctx.fireChannelInactive();
}
 
Example 17
Source File: ConnectionListener.java    From netty-pubsub with MIT License 5 votes vote down vote up
@Override
		public void operationComplete(ChannelFuture future) throws Exception {
	           if(!future.isSuccess()){
	               EventLoop eventExecutors = future.channel().eventLoop();
	               future.channel().close();
	               if(!eventExecutors.isShuttingDown()){
	               eventExecutors.schedule(()->{
	                   if(retryCount.get()<=TRY_LIMITE) {      
	                	   LOGGER.error("���ͻ���״̬��STATUS=failed,TIME="+ DateUtils.getCurrentDateTime()+",msg=���ڳ�������,retrys="+retryCount.getAndIncrement());
	                	   NettyClient.INSTANCE.start();
	                   }else{
	                	   NettyClient.INSTANCE.stop();
	                       LOGGER.error("���������桿�ѳ��������������������ر�");
	                   }
	               },dalayTime,TimeUnit.SECONDS);
	               dalayTime=dalayTime<<1;//��������Խ�࣬�ӳ�ʱ��Խ��
	               }
	           }else{
	        	   LOGGER.info("���ͻ���״̬��STATUS=ACTIVE,TIME="+ DateUtils.getCurrentDateTime());
	        	   ChannelHolder.setChannel(future.channel());
//	        	   //�ж��ϴ��Ƿ��½
//	        	   if(!StringUtil.isEmpty(LastLoginRecord.INSTANCE().getLastToken())){
//	        		   //��broker������֤ƾ֤
//	        		   System.out.println("���͵�½ƾ֤");
//	        		   future.channel().writeAndFlush(new Message(FuncodeEnum.AUTH_USER,(byte)0 , null, LastLoginRecord.INSTANCE().getLastToken().getBytes().length, LastLoginRecord.INSTANCE().getLastToken().getBytes()));
//	        	   }
	               //�������ɹ��ָ��������
	        	   SubRecorder.recover();
	               dalayTime=1;
	               retryCount.set(0);
	           }
			
		}
 
Example 18
Source File: EurekaUpdatingListener.java    From armeria with Apache License 2.0 4 votes vote down vote up
private void scheduleHeartBeat(EventLoop eventLoop, InstanceInfo newInfo) {
    heartBeatFuture = eventLoop.schedule(new HeartBeatTask(eventLoop, newInfo),
                                         newInfo.getLeaseInfo().getRenewalIntervalInSecs(),
                                         TimeUnit.SECONDS);
}
 
Example 19
Source File: RefreshingAddressResolverTest.java    From armeria with Apache License 2.0 4 votes vote down vote up
@Test
void removedWhenExceedingBackoffMaxAttempts() throws Exception {
    try (TestDnsServer server = new TestDnsServer(ImmutableMap.of(
            new DefaultDnsQuestion("foo.com.", A),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("foo.com.", "1.1.1.1", 1))))
    ) {
        final EventLoop eventLoop = eventLoopExtension.get();
        final DnsResolverGroupBuilder builder = builder(server);
        builder.refreshBackoff(Backoff.ofDefault().withMaxAttempts(1));
        try (RefreshingAddressResolverGroup group = builder.build(eventLoop)) {
            final AddressResolver<InetSocketAddress> resolver = group.getResolver(eventLoop);

            final long start = System.nanoTime();

            final Future<InetSocketAddress> foo = resolver.resolve(
                    InetSocketAddress.createUnresolved("foo.com", 36462));
            await().untilAsserted(() -> assertThat(foo.isSuccess()).isTrue());
            assertThat(foo.getNow().getAddress().getHostAddress()).isEqualTo("1.1.1.1");

            server.setResponses(ImmutableMap.of());

            // Schedule resolve() every 500 millis to keep cache hits greater than 0.
            for (int i = 1; i <= 4; i++) {
                eventLoop.schedule(
                        () -> resolver.resolve(InetSocketAddress.createUnresolved("foo.com", 36462)),
                        500 * i, TimeUnit.MILLISECONDS);
            }

            final ConcurrentMap<String, CompletableFuture<CacheEntry>> cache = group.cache();
            await().until(cache::isEmpty);

            assertThat(System.nanoTime() - start).isGreaterThanOrEqualTo(
                    (long) (TimeUnit.SECONDS.toNanos(1) * 0.9)); // buffer (90%)

            final Future<InetSocketAddress> future = resolver.resolve(
                    InetSocketAddress.createUnresolved("foo.com", 36462));
            await().until(future::isDone);
            assertThat(future.cause()).isInstanceOf(UnknownHostException.class);
        }
    }
}
 
Example 20
Source File: PCEPProtocolSessionPromise.java    From bgpcep with Eclipse Public License 1.0 4 votes vote down vote up
@Override
public void operationComplete(final ChannelFuture cf) {
    synchronized (PCEPProtocolSessionPromise.this) {
        PCEPProtocolSessionPromise.LOG.debug("Promise {} connection resolved",
                PCEPProtocolSessionPromise.this);
        Preconditions.checkState(PCEPProtocolSessionPromise.this.pending.equals(cf));
        if (PCEPProtocolSessionPromise.this.isCancelled()) {
            if (cf.isSuccess()) {
                PCEPProtocolSessionPromise.LOG.debug("Closing channel for cancelled promise {}",
                        PCEPProtocolSessionPromise.this);
                cf.channel().close();
            }
        } else if (cf.isSuccess()) {
            PCEPProtocolSessionPromise.LOG.debug("Promise {} connection successful",
                    PCEPProtocolSessionPromise.this);
        } else {
            PCEPProtocolSessionPromise.LOG.debug("Attempt to connect to {} failed",
                    PCEPProtocolSessionPromise.this.address, cf.cause());

            if (PCEPProtocolSessionPromise.this.retryTimer == 0) {
                PCEPProtocolSessionPromise.LOG
                        .debug("Retry timer value is 0. Reconnection will not be attempted");
                PCEPProtocolSessionPromise.this.setFailure(cf.cause());
                return;
            }

            final EventLoop loop = cf.channel().eventLoop();
            loop.schedule(() -> {
                synchronized (PCEPProtocolSessionPromise.this) {
                    PCEPProtocolSessionPromise.LOG.debug("Attempting to connect to {}",
                            PCEPProtocolSessionPromise.this.address);
                    final Future<Void> reconnectFuture = PCEPProtocolSessionPromise.this.bootstrap.connect();
                    reconnectFuture.addListener(BootstrapConnectListener.this);
                    PCEPProtocolSessionPromise.this.pending = reconnectFuture;
                }
            }, PCEPProtocolSessionPromise.this.retryTimer, TimeUnit.SECONDS);
            PCEPProtocolSessionPromise.LOG.debug("Next reconnection attempt in {}s",
                    PCEPProtocolSessionPromise.this.retryTimer);
        }
    }
}