@Override public void close(int timeout) { client.close(timeout); }
@Override public void send(Object message) throws RemotingException { client.send(message); }
@Override public Object getAttribute(String key) { return client.getAttribute(key); }
@Override public URL getUrl() { return client.getUrl(); }
@Override public InetSocketAddress getLocalAddress() { return client.getLocalAddress(); }
@Override public ChannelHandler getChannelHandler() { return client.getChannelHandler(); }
@Override public InetSocketAddress getRemoteAddress() { return client.getRemoteAddress(); }
@Override public boolean hasAttribute(String key) { return client.hasAttribute(key); }
@Override public boolean isClosed() { return client.isClosed(); }
private void startHeartBeatTask(URL url) { if (!client.canHandleIdle()) { AbstractTimerTask.ChannelProvider cp = () -> Collections.singletonList(HeaderExchangeClient.this); int heartbeat = getHeartbeat(url); long heartbeatTick = calculateLeastDuration(heartbeat); this.heartBeatTimerTask = new HeartbeatTimerTask(cp, heartbeatTick, heartbeat); IDLE_CHECK_TIMER.newTimeout(heartBeatTimerTask, heartbeatTick, TimeUnit.MILLISECONDS); } }
@Override public URL getUrl() { return client.getUrl(); }
@Override public InetSocketAddress getLocalAddress() { return client.getLocalAddress(); }
@Override public ChannelHandler getChannelHandler() { return client.getChannelHandler(); }
@Override public InetSocketAddress getRemoteAddress() { return client.getRemoteAddress(); }
@Override public boolean hasAttribute(String key) { return client.hasAttribute(key); }
@Override public boolean isClosed() { return client.isClosed(); }
private void startHeartBeatTask(URL url) { if (!client.canHandleIdle()) { AbstractTimerTask.ChannelProvider cp = () -> Collections.singletonList(HeaderExchangeClient.this); int heartbeat = getHeartbeat(url); long heartbeatTick = calculateLeastDuration(heartbeat); this.heartBeatTimerTask = new HeartbeatTimerTask(cp, heartbeatTick, heartbeat); IDLE_CHECK_TIMER.newTimeout(heartBeatTimerTask, heartbeatTick, TimeUnit.MILLISECONDS); } }
@Override public void close() { client.close(); }
@Override public void send(Object message) throws RemotingException { client.send(message); }
public HeaderExchangeClient(Client client, boolean startTimer) { Assert.notNull(client, "Client can't be null"); this.client = client; this.channel = new HeaderExchangeChannel(client); if (startTimer) { URL url = client.getUrl(); startReconnectTask(url); startHeartBeatTask(url); } }