header->set('id', self::generateId()); $request->header->set('rd', 1); $request->questions[] = (array) $query; $request->prepare(); return $request; } /** * Creates a new response message for the given query with the given answer records * * @param Query $query * @param Record[] $answers * @return self */ public static function createResponseWithAnswersForQuery(Query $query, array $answers) { $response = new Message(); $response->header->set('id', self::generateId()); $response->header->set('qr', 1); $response->header->set('opcode', Message::OPCODE_QUERY); $response->header->set('rd', 1); $response->header->set('rcode', Message::RCODE_OK); $response->questions[] = (array) $query; foreach ($answers as $record) { $response->answers[] = $record; } $response->prepare(); return $response; } private static function generateId() { return mt_rand(0, 0xffff); } public $data = ''; public $header; public $questions = array(); public $answers = array(); public $authority = array(); public $additional = array(); public $consumed = 0; public function __construct() { $this->header = new HeaderBag(); } public function prepare() { $this->header->populateCounts($this); } }