protected void reconnect() { if (retries <= 0) { Flog.log("Giving up!"); context.shutdown(); return; } delay = Math.min(10000, Math.round((float) 1.5 * delay)); Flog.log("Connection lost. Reconnecting in %sms", delay); context.setTimeout( delay, new Runnable() { @Override public void run() { Flog.log("Attempting to reconnect."); connect(); } }); }
protected void _connect(String host, int port) { Bootstrap b = new Bootstrap(); if (!context.addGroup(b)) { Flog.warn("no loopgroup, will not reconnect"); return; } b.channel(NioSocketChannel.class); b.option(ChannelOption.SO_KEEPALIVE, true); b.option(ChannelOption.TCP_NODELAY, true); b.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 15 * 1000); b.handler(new FlooChannelInitializer(this)); try { ChannelFuture connect = b.connect(host, port); channel = connect.channel(); } catch (RejectedExecutionException e) { context.errorMessage("Can not connect to floobits!"); context.shutdown(); } catch (Throwable e) { Flog.error(e); reconnect(); } }