pocketmine\network\query\QueryHandler::handle PHP Метод

handle() публичный Метод

public handle ( $address, $port, $packet )
    public function handle($address, $port, $packet)
    {
        $offset = 2;
        $packetType = ord($packet[$offset++]);
        $sessionID = Binary::readInt(substr($packet, $offset, 4));
        $offset += 4;
        $payload = substr($packet, $offset);
        switch ($packetType) {
            case self::HANDSHAKE:
                //Handshake
                $reply = chr(self::HANDSHAKE);
                $reply .= Binary::writeInt($sessionID);
                $reply .= self::getTokenString($this->token, $address) . "";
                $this->server->getNetwork()->sendPacket($address, $port, $reply);
                break;
            case self::STATISTICS:
                //Stat
                $token = Binary::readInt(substr($payload, 0, 4));
                if ($token !== self::getTokenString($this->token, $address) and $token !== self::getTokenString($this->lastToken, $address)) {
                    break;
                }
                $reply = chr(self::STATISTICS);
                $reply .= Binary::writeInt($sessionID);
                if ($this->timeout < microtime(true)) {
                    $this->regenerateInfo();
                }
                if (strlen($payload) === 8) {
                    $reply .= $this->longData;
                } else {
                    $reply .= $this->shortData;
                }
                $this->server->getNetwork()->sendPacket($address, $port, $reply);
                break;
        }
    }

Usage Example

Пример #1
0
 /**
  * @param string $address
  * @param int    $port
  * @param string $payload
  *
  * TODO: move this to Network
  */
 public function handlePacket($address, $port, $payload)
 {
     try {
         if (strlen($payload) > 2 and substr($payload, 0, 2) === "þý" and $this->queryHandler instanceof QueryHandler) {
             $this->queryHandler->handle($address, $port, $payload);
         }
     } catch (\Exception $e) {
         if (\pocketmine\DEBUG > 1) {
             if ($this->logger instanceof MainLogger) {
                 $this->logger->logException($e);
             }
         }
         $this->getNetwork()->blockAddress($address, 600);
     }
     //TODO: add raw packet events
 }
All Usage Examples Of pocketmine\network\query\QueryHandler::handle