/**
  * Creates a new A2MGETSERVERSBATCH2 request object, filtering by the
  * given paramters
  *
  * @param int $regionCode The region code to filter servers by region.
  * @param string $startIp This should be the last IP received from the
  *        master server or 0.0.0.0
  * @param string $filter The filters to apply in the form
  *        ("\filtername\value...")
  */
 public function __construct($regionCode = MasterServer::REGION_ALL, $startIp = '0.0.0.0', $filter = '')
 {
     parent::__construct(SteamPacket::A2M_GET_SERVERS_BATCH2_HEADER);
     $this->filter = $filter;
     $this->regionCode = $regionCode;
     $this->startIp = $startIp;
 }
 /**
  * Creates a new S2A_PLAYER response object based on the given data
  *
  * @param string $contentData The raw packet data sent by the server
  * @throws PacketFormatException if the packet data is missing
  */
 public function __construct($contentData)
 {
     if (empty($contentData)) {
         throw new PacketFormatException('Wrong formatted S2A_PLAYER packet.');
     }
     parent::__construct(SteamPacket::S2A_PLAYER_HEADER, $contentData);
     $this->contentData->getByte();
     $this->playerHash = [];
     while ($this->contentData->remaining() > 0) {
         $playerData = [$this->contentData->getByte(), $this->contentData->getString(), $this->contentData->getLong(), $this->contentData->getFloat()];
         $this->playerHash[$playerData[1]] = new SteamPlayer($playerData[0], $playerData[1], $playerData[2], $playerData[3]);
     }
 }
 /**
  * Creates a new M2A_SERVER_BATCH response object based on the given data
  *
  * @param string $data The raw packet data replied from the server
  * @throws PacketFormatException if the packet data is not well formatted
  */
 public function __construct($data)
 {
     parent::__construct(SteamPacket::M2A_SERVER_BATCH_HEADER, $data);
     if ($this->contentData->getByte() != 10) {
         throw new PacketFormatException('Master query response is missing additional 0x0A byte.');
     }
     do {
         $firstOctet = $this->contentData->getByte();
         $secondOctet = $this->contentData->getByte();
         $thirdOctet = $this->contentData->getByte();
         $fourthOctet = $this->contentData->getByte();
         $portNumber = $this->contentData->getShort();
         $portNumber = (($portNumber & 0xff) << 8) + ($portNumber >> 8);
         $this->serverArray[] = "{$firstOctet}.{$secondOctet}.{$thirdOctet}.{$fourthOctet}:{$portNumber}";
     } while ($this->contentData->remaining() > 0);
 }
 /**
  * Creates a new S2A_RULES response object based on the given data
  *
  * @param string $contentData The raw packet data sent by the server
  * @throws PacketFormatException if the packet data is missing
  */
 public function __construct($contentData)
 {
     if (empty($contentData)) {
         throw new PacketFormatException('Wrong formatted S2A_RULES packet.');
     }
     parent::__construct(SteamPacket::S2A_RULES_HEADER, $contentData);
     $rulesCount = $this->contentData->getShort();
     $this->rulesArray = [];
     for ($x = 0; $x < $rulesCount; $x++) {
         $rule = $this->contentData->getString();
         $value = $this->contentData->getString();
         if (empty($rule)) {
             break;
         }
         $this->rulesArray[$rule] = $value;
     }
 }
 /**
  * Creates a RCON command response for the given command output
  *
  * @param string $commandResponse The output of the command executed on the
  *        server
  */
 public function __construct($commandResponse)
 {
     parent::__construct(SteamPacket::RCON_GOLDSRC_RESPONSE_HEADER, $commandResponse);
 }
 /**
  * Creates a request for the given request string
  *
  * The request string has the form <var>rcon {challenge number} {RCON
  * password} {command}</var>.
  *
  * @param string $request The request string to send to the server
  */
 public function __construct($request)
 {
     parent::__construct(0x0, $request);
 }
 /**
  * Creates a new RCON packet object with the given request ID, type and
  * content data
  *
  * @param int $requestId The request ID for the current RCON communication
  * @param int $rconHeader The header for the packet type
  * @param string $rconData The raw packet data
  */
 public function __construct($requestId, $rconHeader, $rconData = null)
 {
     parent::__construct($rconHeader, "{$rconData}");
     $this->requestId = $requestId;
 }