package org.societies.cis.directory.client;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.societies.api.cis.directory.ICisDirectoryCallback;
import org.societies.api.schema.cis.directory.CisAdvertisementRecord;
public class CisDirectoryRemoteClient implements ICisDirectoryCallback{
List<CisAdvertisementRecord> resultList;
private final long TIMEOUT = 5;
private BlockingQueue<List<CisAdvertisementRecord>> returnList;
private static Logger logger = LoggerFactory.getLogger(CisDirectoryRemoteClient.class);
public CisDirectoryRemoteClient(){
logger.info("CIS DIRECTORY CisDirectoryRemoteClient called ###########: ");
//logger.info("CIS DIRECTORY CALLBACK cisDirectoryClient = @@@@@@@@@@: "+cisDirectoryClient);
returnList = new ArrayBlockingQueue<List<CisAdvertisementRecord>>(1);
}
public void getResult(List<CisAdvertisementRecord> records) {
resultList = new ArrayList<CisAdvertisementRecord>();
for (int i = 0; i < records.size(); i++)
{
resultList.add(records.get(i));
}
setResultList(resultList);
}
/**
* @return the resultList
*/
public List<CisAdvertisementRecord> getResultList() {
try {
return returnList.poll(TIMEOUT, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
return null;
}
}
/**
* @param resultList the resultList to set
*/
public void setResultList(List<CisAdvertisementRecord> resultList) {
try {
returnList.put(resultList);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}