37 $this->queue = new \SplQueue();
38 $this->queue->setIteratorMode(\SplQueue::IT_MODE_DELETE);
39 $this->dividedBatches = array();
42 public function add($item)
44 $this->queue->enqueue($item);
49 public function flush()
54 foreach ($this->dividedBatches as $batchIndex => $dividedBatch) {
55 while ($dividedBatch->valid()) {
56 $batch = $dividedBatch->current();
57 $dividedBatch->next();
59 $this->transferStrategy->transfer($batch);
60 $items = array_merge($items, $batch);
61 }
catch (\Exception $e) {
66 unset($this->dividedBatches[$batchIndex]);
74 return count($this->queue) == 0 &&
count($this->dividedBatches) == 0;
82 if (
count($this->queue)) {
83 if ($batches = $this->divisionStrategy->createBatches($this->queue)) {
85 if (is_array($batches)) {
86 $batches = new \ArrayIterator($batches);
88 $this->dividedBatches[] = $batches;