package cgl.iotcloud.core.utils;
import cgl.iotcloud.core.sensorsite.MasterClient;
import cgl.iotcloud.core.sensorsite.SiteContext;
import org.apache.thrift.transport.TTransportException;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
public class MasterClientCache {
private int maxClients = 10;
private BlockingQueue<MasterClient> siteClients = new ArrayBlockingQueue<MasterClient>(maxClients);
private int count = 0;
private SiteContext context;
public MasterClientCache(SiteContext context) {
this.context = context;
}
public MasterClient getMasterClient() throws Exception {
if (siteClients.size() > 0 && count == 10) {
return siteClients.poll();
} else {
MasterClient client = new MasterClient(context);
count++;
return client;
}
}
public void done(MasterClient client) {
siteClients.offer(client);
}
public void markClientFailed(MasterClient client) {
if (client != null) {
client.close();
}
}
}