Пример #1
0
 /**
  * Encode the header section of the message
  *
  * @param \LibDNS\Encoder\EncodingContext $encodingContext
  * @param \LibDNS\Messages\Message $message
  * @return string
  * @throws \UnexpectedValueException When the header section is invalid
  */
 private function encodeHeader(EncodingContext $encodingContext, Message $message)
 {
     $header = ['id' => $message->getID(), 'meta' => 0, 'qd' => $message->getQuestionRecords()->count(), 'an' => $message->getAnswerRecords()->count(), 'ns' => $message->getAuthorityRecords()->count(), 'ar' => $message->getAdditionalRecords()->count()];
     $header['meta'] |= $message->getType() << 16;
     $header['meta'] |= $message->getOpCode() << 11;
     $header['meta'] |= (int) $message->isAuthoritative() << 10;
     $header['meta'] |= (int) $encodingContext->isTruncated() << 9;
     $header['meta'] |= (int) $message->isRecursionDesired() << 8;
     $header['meta'] |= (int) $message->isRecursionAvailable() << 7;
     $header['meta'] |= $message->getResponseCode();
     return pack('n*', $header['id'], $header['meta'], $header['qd'], $header['an'], $header['ns'], $header['ar']);
 }