/** * Encode a Message to raw network data * * @param \LibDNS\Messages\Message $message The Message to encode * @param bool $compress Enable message compression * @return string */ public function encode(Message $message, $compress = true) { $packet = $this->packetFactory->create(); $encodingContext = $this->encodingContextFactory->create($packet, $compress); foreach ($message->getQuestionRecords() as $record) { /** @var \LibDNS\Records\Question $record */ $this->encodeQuestionRecord($encodingContext, $record); } foreach ($message->getAnswerRecords() as $record) { /** @var \LibDNS\Records\Resource $record */ $this->encodeResourceRecord($encodingContext, $record); } foreach ($message->getAuthorityRecords() as $record) { /** @var \LibDNS\Records\Resource $record */ $this->encodeResourceRecord($encodingContext, $record); } foreach ($message->getAdditionalRecords() as $record) { /** @var \LibDNS\Records\Resource $record */ $this->encodeResourceRecord($encodingContext, $record); } return $this->encodeHeader($encodingContext, $message) . $packet->read($packet->getLength()); }