blob: 0a526be3f2ad70e6d23e8cd3c06435db01c02c4a [file] [log] [blame]
package org.eclipse.ote.io;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import org.eclipse.osee.framework.logging.OseeLog;
public class DatagramChannelDataPool {
private final ArrayBlockingQueue<DatagramChannelData> data;
private final DatagramChannelDataFactory factory;
public DatagramChannelDataPool(DatagramChannelDataFactory factory, int max){
this.factory = factory;
data = new ArrayBlockingQueue<DatagramChannelData>(max);
for(int i = 0; i < max; i++){
data.offer(factory.create(this));
}
}
public DatagramChannelData get() throws InterruptedException{
DatagramChannelData datagramChannelData = data.poll(5000, TimeUnit.MILLISECONDS);
if(datagramChannelData == null){
OseeLog.log(getClass(), Level.WARNING, "Timed out waiting for datagram send object");
datagramChannelData = factory.create(this);
}
return datagramChannelData;
}
public void offer(DatagramChannelData datagramChannelData){
data.offer(datagramChannelData);
}
}