/** * @return \AMQP\Message * @throws \Exception */ public function waitContent() { $frm = $this->nextFrame(); $frameType = $frm[0]; $payload = $frm[1]; if ($frameType != 2) { throw new \Exception("Expecting Content header"); } $payloadReader = new Reader(substr($payload, 0, 12)); $classId = $payloadReader->readShort(); $weight = $payloadReader->readShort(); $bodySize = $payloadReader->readLonglong(); $msg = new Message(); $msg->load_properties(substr($payload, 12)); $bodyParts = array(); $bodyReceived = 0; while (bccomp($bodySize, $bodyReceived) == 1) { $frm = $this->nextFrame(); $frameType = $frm[0]; $payload = $frm[1]; /* * @todo add constants for the frameType identification */ if ($frameType != 3) { throw new \Exception(sprintf('Expecting Content body, received frame type %s', $frameType)); } $bodyParts[] = $payload; $bodyReceived = bcadd($bodyReceived, strlen($payload)); } $msg->body = implode('', $bodyParts); if ($this->autoDecode && isset($msg->content_encoding)) { try { $msg->body = $msg->decode(); } catch (\Exception $e) { if ($this->debug) { Helper::debugMsg(sprintf('Ignoring body decoding exception: %s', $e->getMessage())); } } } return $msg; }
/** * @param Wire\Reader $args * @param Message $msg * * @return Message */ protected function basicGetOk(\AMQP\Wire\Reader $args, \AMQP\Message $msg) { $deliveryTag = $args->readLonglong(); $redelivered = $args->readBit(); $exchange = $args->readShortstr(); $routingKey = $args->readShortstr(); $messageCount = $args->readLong(); $msg->delivery_info = array("delivery_tag" => $deliveryTag, "redelivered" => $redelivered, "exchange" => $exchange, "routing_key" => $routingKey, "message_count" => $messageCount); return $msg; }