package org.act.tstream.message.netty;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingDeque;
import org.act.tstream.callback.RunnableCallback;
import org.apache.log4j.Logger;
public class ReconnectRunnable extends RunnableCallback{
private static final Logger LOG = Logger.getLogger(ReconnectRunnable.class);
private BlockingQueue<NettyClient> queue = new LinkedBlockingDeque<NettyClient>();
public void pushEvent(NettyClient client) {
queue.offer(client);
}
private boolean closed = false;
@Override
public void run() {
LOG.info("Successfully start reconnect thread");
while(closed == false) {
NettyClient client = null;
try {
client = queue.take();
} catch (InterruptedException e) {
continue;
}
if (client != null) {
client.doReconnect();
}
}
LOG.info("Successfully shutdown reconnect thread");
}
@Override
public void shutdown() {
closed = true;
}
@Override
public Object getResult() {
return -1;
}
}