/** * Callback after content body has been completely received. */ protected function onBodyComplete() { if ($this->returnFrame) { $content = $this->bodyBuffer->consume($this->bodyBuffer->getLength()); $message = new Message(null, null, false, $this->returnFrame->exchange, $this->returnFrame->routingKey, $this->headerFrame->toArray(), $content); foreach ($this->returnCallbacks as $callback) { $callback($message, $this->returnFrame); } $this->returnFrame = null; $this->headerFrame = null; } elseif ($this->deliverFrame) { $content = $this->bodyBuffer->consume($this->bodyBuffer->getLength()); if (isset($this->deliverCallbacks[$this->deliverFrame->consumerTag])) { $message = new Message($this->deliverFrame->consumerTag, $this->deliverFrame->deliveryTag, $this->deliverFrame->redelivered, $this->deliverFrame->exchange, $this->deliverFrame->routingKey, $this->headerFrame->toArray(), $content); $callback = $this->deliverCallbacks[$this->deliverFrame->consumerTag]; $callback($message, $this, $this->client); } $this->deliverFrame = null; $this->headerFrame = null; } elseif ($this->getOkFrame) { $content = $this->bodyBuffer->consume($this->bodyBuffer->getLength()); // deferred has to be first nullified and then resolved, otherwise results in race condition $deferred = $this->getDeferred; $this->getDeferred = null; $deferred->resolve(new Message(null, $this->getOkFrame->deliveryTag, $this->getOkFrame->redelivered, $this->getOkFrame->exchange, $this->getOkFrame->routingKey, $this->headerFrame->toArray(), $content)); $this->getOkFrame = null; $this->headerFrame = null; } else { throw new \LogicException("Either return or deliver frame has to be handled here."); } }
/** * Callback after content body has been completely received. */ protected function onBodyComplete() { if ($this->returnFrame) { // TODO } elseif ($this->deliverFrame) { $content = $this->bodyBuffer->consume($this->bodyBuffer->getLength()); if (isset($this->deliverCallbacks[$this->deliverFrame->consumerTag])) { $msg = new Message($this->deliverFrame->consumerTag, $this->deliverFrame->deliveryTag, $this->deliverFrame->redelivered, $this->deliverFrame->exchange, $this->deliverFrame->routingKey, $this->headerFrame->toArray(), $content); $callback = $this->deliverCallbacks[$this->deliverFrame->consumerTag]; $callback($msg, $this, $this->client); } $this->deliverFrame = null; $this->headerFrame = null; } else { throw new \LogicException("Either return or deliver frame has to be handled here."); } }