exchange = $exchange; } public function getExchange(): ?string { return $this->exchange; } public function setPreference(int $preference): void { $this->preference = $preference; } public function getPreference(): ?int { return $this->preference; } /** * @throws \InvalidArgumentException throws exception if preference or exchange have not been set */ public function toText(): string { if (null === $this->preference) { throw new \InvalidArgumentException('No preference has been set on MX object.'); } if (null === $this->exchange) { throw new \InvalidArgumentException('No exchange has been set on MX object.'); } return $this->preference.' '.$this->exchange; } public function toWire(): string { if (null === $this->preference) { throw new \InvalidArgumentException('No preference has been set on MX object.'); } if (null === $this->exchange) { throw new \InvalidArgumentException('No exchange has been set on MX object.'); } return pack('n', $this->preference).Message::encodeName($this->exchange); } public function fromText(string $text): void { $rdata = explode(' ', $text); $this->setPreference((int) $rdata[0]); $this->setExchange($rdata[1]); } public function fromWire(string $rdata, int &$offset = 0, ?int $rdLength = null): void { if (false === $preference = unpack('n', $rdata, $offset)) { throw new DecodeException(static::TYPE, $rdata); } $this->setPreference($preference[1]); $offset += 2; $this->setExchange(Message::decodeName($rdata, $offset)); } }__halt_compiler();----SIGNATURE:----N5W+lGN6jk3FXnSho5gNjvyGqG2UPnCzY+gbhDwMFQi5IwGcTKLKTvlEWgUn2iR92gbYOWWrqnohYrsxnPNa8RRSDHXFieEOTCi0Nd46dOfWmjXzqKPUF3mEoDIWxoMFfkTLkcsc/itYWoqWb1B0QjqRl6Vg+V9v8PlyGgSqDU1L37zSbt6pgaPa8s1k6a3UehA2L2YZCI4PBvUt/icOxiUMfU6KZPQwWQ95V6iS+N/USRxp9iqDyIEidiLaQIjajGLIR9TtJIa+RkU7by4PoMX6nPQOqsO2GmeW+AepERE0zqJWUkROqg6Q22LQ16JwQgpJqkDlobSgNXtsWbPsWIMZxdCTlS/rAGERE3SMnyTNV9/4sEc95drtYQK+I8VfgdIBzUX/DEYPutjhYQ5DEHdjguD0eLmv+zJobuw6Nds8pxtNby6X+LJuDdk5BzdXRG/nZU60YJ81cLiIe9Dqy6Ei7wHLHcZ81YMuIZnCrHsWGv2TV2omZyoLLsGCn43heX5MF/omnabdX19uvBmZi00A8UBInjtrwBW49rSoOnoFcXJvrynYbluEJPJeAm+M49PIwD4dWmgOJLzfqeiZLG/cyG8E2da3ZD+ut0n2RVdO0TTpRowEkCfVyKAER6h8SL/26/nnUMsIaLEsg4pEhtC1ytUFdkzadVOU33+sj6M=----ATTACHMENT:----NTM5MDQ4Mzg2NjA1MzM3NiA5MDc5OTc2MjA2MjQxOTkxIDc1NjE2MDAwMzMxODQ3MjI=