package org.mobicents.mgcp.stack.utils;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
public class PacketRepresentationFactory {
private static final Logger logger = Logger.getLogger(PacketRepresentationFactory.class);
private List<PacketRepresentation> list = new ArrayList<PacketRepresentation>();
private int size = 0;
private int dataArrSize = 0;
private int count = 0;
public PacketRepresentationFactory(int size, int dataArrSize) {
this.size = size;
this.dataArrSize = dataArrSize;
for (int i = 0; i < size; i++) {
PacketRepresentation pr = new PacketRepresentation(dataArrSize, this);
list.add(pr);
}
}
public PacketRepresentation allocate() {
PacketRepresentation pr = null;
if (!list.isEmpty()) {
pr = list.remove(0);
}
if(pr!=null){
pr.setLength(0);
return pr;
}
pr = new PacketRepresentation(this.dataArrSize, this);
count++;
if (logger.isDebugEnabled()) {
logger.debug("UtilsFactory underflow. Count = " + count);
}
logger.error("UtilsFactory underflow. Count = " + count);
return pr;
}
public void deallocate(PacketRepresentation pr) {
if (list.size() < size && pr != null) {
list.add(pr);
} else{
System.out.println("Discarding the PR "+pr);
}
}
public int getSize() {
return this.size;
}
public int getDataArrSize() {
return this.dataArrSize;
}
public int getCount() {
return this.count;
}
}