public synchronized DataChunkImpl nextBuffer(Object id, ProcessedListener l) {
		ByteBuffer b = null;
		Iterator<ByteBuffer> iter = freePackets.iterator();
		if(iter.hasNext()) {
			b = iter.next();
			iter.remove();
		} else 
			b = ByteBuffer.allocateDirect(1000);
		
		DataChunkImpl impl = new DataChunkImpl(id, b, this);
		impl.setListener(l);
		return impl;
	}