/** * {@inheritdoc} */ public function delayed($queue, $delay, Job $job) { $options = $job->getOptions(); $options['delay'] = $delay; $job->setOptions($options); return $this->push($queue, $job); }
/** * {@inheritdoc} */ public function pop($queue, $timeout = 0) { if ($this->job === null) { throw new QueueEmptyException($queue); } $payload = $this->job->createPayload(); $this->job = null; return new $this->managerClass($queue, $payload, $this); }
/** * @covers ::createPayload */ public function testClosurePayload() { $closure = function () { return true; }; $job = new Job($closure, ['data'], ['options']); $this->assertEquals(['job' => 'Indigo\\Queue\\Job\\ClosureJob', 'closure' => serialize(new SerializableClosure($closure)), 'data' => ['data']], $job->createPayload()); }
/** * {@inheritdoc} */ public function release(ManagerInterface $manager, $delay = 0) { $payload = $manager->getPayload(); $payload['attempts'] = isset($payload['attempts']) ? $payload['attempts'] + 1 : 2; $this->delete($manager); $job = Job::createFromPayload($payload); if ($delay > 0) { $this->delayed($manager->getQueue(), $delay, $job); } else { $this->push($manager->getQueue(), $job); } return true; }