koraktor/steam-condenser-php

View on GitHub
lib/SteamCondenser/Servers/Packets/A2MGETSERVERSBATCH2Packet.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
 * This code is free software; you can redistribute it and/or modify it under
 * the terms of the new BSD License.
 *
 * Copyright (c) 2008-2014, Sebastian Staudt
 *
 * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
 */

namespace SteamCondenser\Servers\Packets;

use SteamCondenser\Servers\MasterServer;

/**
 * This packet class represents a A2M_GET_SERVERS_BATCH2 request sent to a
 * master server
 *
 * It is used to receive a list of game servers matching the specified filters.
 *
 * Filtering:
 * Instead of filtering the results sent by the master server locally, you
 * should at least use the following filters to narrow down the results sent by
 * the master server. Receiving all servers from the master server is taking
 * quite some time.
 *
 * Available filters:
 * <ul>
 *  <li><var>\type\d</var>: Request only dedicated servers</li>
 *  <li><var>\secure\1</var>: Request only secure servers</li>
 *  <li><var>\gamedir\[mod]</var>: Request only servers of a specific mod</li>
 *  <li><var>\map\[mapname]</var>: Request only servers running a specific
 *      map</li>
 *  <li><var>\linux\1</var>: Request only linux servers</li>
 *  <li><var>\emtpy\1</var>: Request only <b>non</b>-empty servers</li>
 *  <li><var>\full\1</var>: Request only servers <b>not</b> full</li>
 *  <li><var>\proxy\1</var>: Request only spectator proxy servers</li>
 * </ul>
 *
 * @author Sebastian Staudt
 * @package steam-condenser
 * @subpackage packets
 * @see MasterServer::getServers()
 */
class A2MGETSERVERSBATCH2Packet extends SteamPacket {

    private $filter;
    private $regionCode;
    private $startIp;

    /**
     * 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;
    }

    /**
     * Returns the raw data representing this packet
     *
     * @return string A string containing the raw data of this request packet
     */
    public function __toString() {
        return chr($this->headerData) . chr($this->regionCode) . $this->startIp . "\0" . $this->filter . "\0";
    }
}