/** * {@inheritdoc} */ public function waitAndReserve($timeout = null) { if ($timeout === null) { $timeout = $this->options['timeout']; } $pheanstalkJob = $this->client->reserveFromTube($this->name, $timeout); if ($pheanstalkJob === null || $pheanstalkJob === false) { return null; } $message = $this->decodeMessage($pheanstalkJob->getData()); $message->setIdentifier($pheanstalkJob->getId()); $message->setState(Message::STATE_RESERVED); return $message; }