Modernize private property declarations in src/network

This commit is contained in:
Dylan K. Taylor 2022-05-17 21:22:33 +01:00
parent cd016bedce
commit 6eac2ea7a5
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
31 changed files with 154 additions and 340 deletions

View File

@ -29,15 +29,10 @@ use function count;
final class BandwidthStatsTracker{
/** @var int[] */
private $history;
/** @var int */
private $nextHistoryIndex = 0;
/** @var int */
private $bytesSinceLastRotation = 0;
/** @var int */
private $totalBytes = 0;
private array $history;
private int $nextHistoryIndex = 0;
private int $bytesSinceLastRotation = 0;
private int $totalBytes = 0;
/** @phpstan-param positive-int $historySize */
public function __construct(int $historySize){

View File

@ -24,12 +24,8 @@ declare(strict_types=1);
namespace pocketmine\network;
final class BidirectionalBandwidthStatsTracker{
/** @var BandwidthStatsTracker */
private $send;
/** @var BandwidthStatsTracker */
private $receive;
private BandwidthStatsTracker $send;
private BandwidthStatsTracker $receive;
/** @phpstan-param positive-int $historySize */
public function __construct(int $historySize){

View File

@ -38,35 +38,28 @@ use const PHP_INT_MAX;
class Network{
/** @var NetworkInterface[] */
private $interfaces = [];
private array $interfaces = [];
/** @var AdvancedNetworkInterface[] */
private $advancedInterfaces = [];
private array $advancedInterfaces = [];
/** @var RawPacketHandler[] */
private $rawPacketHandlers = [];
private array $rawPacketHandlers = [];
/**
* @var int[]
* @phpstan-var array<string, int>
*/
private $bannedIps = [];
private array $bannedIps = [];
/** @var BidirectionalBandwidthStatsTracker */
private $bandwidthTracker;
private BidirectionalBandwidthStatsTracker $bandwidthTracker;
private string $name;
private NetworkSessionManager$sessionManager;
/** @var string */
private $name;
/** @var NetworkSessionManager */
private $sessionManager;
/** @var \Logger */
private $logger;
public function __construct(\Logger $logger){
public function __construct(
private \Logger $logger
){
$this->sessionManager = new NetworkSessionManager();
$this->logger = $logger;
$this->bandwidthTracker = new BidirectionalBandwidthStatsTracker(5);
}

View File

@ -30,7 +30,7 @@ use function spl_object_id;
class NetworkSessionManager{
/** @var NetworkSession[] */
private $sessions = [];
private array $sessions = [];
/**
* Adds a network session to the manager. This should only be called on session creation.

View File

@ -75,15 +75,9 @@ class InventoryManager{
private const RESERVED_WINDOW_ID_RANGE_START = ContainerIds::LAST - 10;
private const HARDCODED_INVENTORY_WINDOW_ID = self::RESERVED_WINDOW_ID_RANGE_START + 2;
/** @var Player */
private $player;
/** @var NetworkSession */
private $session;
/** @var Inventory[] */
private $windowMap = [];
/** @var int */
private $lastInventoryNetworkId = ContainerIds::FIRST;
private array $windowMap = [];
private int $lastInventoryNetworkId = ContainerIds::FIRST;
/**
* TODO: HACK! This tracks GUIs for inventories that the server considers "always open" so that the client can't
@ -98,17 +92,16 @@ class InventoryManager{
* @var Item[][]
* @phpstan-var array<int, array<int, Item>>
*/
private $initiatedSlotChanges = [];
/** @var int */
private $clientSelectedHotbarSlot = -1;
private array $initiatedSlotChanges = [];
private int $clientSelectedHotbarSlot = -1;
/** @phpstan-var ObjectSet<ContainerOpenClosure> */
private ObjectSet $containerOpenCallbacks;
public function __construct(Player $player, NetworkSession $session){
$this->player = $player;
$this->session = $session;
public function __construct(
private Player $player,
private NetworkSession $session
){
$this->containerOpenCallbacks = new ObjectSet();
$this->containerOpenCallbacks->add(\Closure::fromCallable([self::class, 'createContainerOpen']));

View File

@ -28,13 +28,7 @@ use pocketmine\Server;
use function spl_object_id;
final class StandardPacketBroadcaster implements PacketBroadcaster{
/** @var Server */
private $server;
public function __construct(Server $server){
$this->server = $server;
}
public function __construct(private Server $server){}
public function broadcastPackets(array $recipients, array $packets) : void{
$buffers = [];

View File

@ -79,23 +79,16 @@ class ChunkCache implements ChunkListener{
}
}
/** @var World */
private $world;
/** @var Compressor */
private $compressor;
/** @var CompressBatchPromise[] */
private $caches = [];
private array $caches = [];
/** @var int */
private $hits = 0;
/** @var int */
private $misses = 0;
private int $hits = 0;
private int $misses = 0;
private function __construct(World $world, Compressor $compressor){
$this->world = $world;
$this->compressor = $compressor;
}
private function __construct(
private World $world,
private Compressor $compressor
){}
/**
* Requests asynchronous preparation of the chunk at the given coordinates.

View File

@ -54,7 +54,7 @@ final class CraftingDataCache{
* @var CraftingDataPacket[]
* @phpstan-var array<int, CraftingDataPacket>
*/
private $caches = [];
private array $caches = [];
public function getCache(CraftingManager $manager) : CraftingDataPacket{
$id = spl_object_id($manager);

View File

@ -34,11 +34,6 @@ use function file_get_contents;
class StaticPacketCache{
use SingletonTrait;
/** @var BiomeDefinitionListPacket */
private $biomeDefs;
/** @var AvailableActorIdentifiersPacket */
private $availableActorIdentifiers;
/**
* @phpstan-return CacheableNbt<\pocketmine\nbt\tag\CompoundTag>
*/
@ -55,10 +50,10 @@ class StaticPacketCache{
);
}
public function __construct(BiomeDefinitionListPacket $biomeDefs, AvailableActorIdentifiersPacket $availableActorIdentifiers){
$this->biomeDefs = $biomeDefs;
$this->availableActorIdentifiers = $availableActorIdentifiers;
}
public function __construct(
private BiomeDefinitionListPacket $biomeDefs,
private AvailableActorIdentifiersPacket $availableActorIdentifiers
){}
public function getBiomeDefs() : BiomeDefinitionListPacket{
return $this->biomeDefs;

View File

@ -31,13 +31,11 @@ class CompressBatchPromise{
* @var \Closure[]
* @phpstan-var (\Closure(self) : void)[]
*/
private $callbacks = [];
private array $callbacks = [];
/** @var string|null */
private $result = null;
private ?string $result = null;
/** @var bool */
private $cancelled = false;
private bool $cancelled = false;
/**
* @phpstan-param \Closure(self) : void ...$callbacks

View File

@ -46,21 +46,14 @@ final class ZlibCompressor implements Compressor{
return new self(self::DEFAULT_LEVEL, self::DEFAULT_THRESHOLD, self::DEFAULT_MAX_DECOMPRESSION_SIZE);
}
/** @var int */
private $level;
/** @var int */
private $threshold;
/** @var int */
private $maxDecompressionSize;
public function __construct(int $level, int $minCompressionSize, int $maxDecompressionSize){
$this->level = $level;
$this->threshold = $minCompressionSize;
$this->maxDecompressionSize = $maxDecompressionSize;
}
public function __construct(
private int $level,
private int $minCompressionSize,
private int $maxDecompressionSize
){}
public function willCompress(string $data) : bool{
return $this->threshold > -1 && strlen($data) >= $this->threshold;
return $this->minCompressionSize > -1 && strlen($data) >= $this->minCompressionSize;
}
/**

View File

@ -46,25 +46,25 @@ final class ItemTranslator{
* @var int[]
* @phpstan-var array<int, int>
*/
private $simpleCoreToNetMapping = [];
private array $simpleCoreToNetMapping = [];
/**
* @var int[]
* @phpstan-var array<int, int>
*/
private $simpleNetToCoreMapping = [];
private array $simpleNetToCoreMapping = [];
/**
* runtimeId = array[internalId][metadata]
* @var int[][]
* @phpstan-var array<int, array<int, int>>
*/
private $complexCoreToNetMapping = [];
private array $complexCoreToNetMapping = [];
/**
* [internalId, metadata] = array[runtimeId]
* @var int[][]
* @phpstan-var array<int, array{int, int}>
*/
private $complexNetToCoreMapping = [];
private array $complexNetToCoreMapping = [];
private static function make() : self{
$data = Utils::assumeNotFalse(file_get_contents(Path::join(\pocketmine\BEDROCK_DATA_PATH, 'r16_to_current_item_map.json')), "Missing required resource file");

View File

@ -26,19 +26,11 @@ namespace pocketmine\network\mcpe\convert;
use pocketmine\nbt\tag\CompoundTag;
final class R12ToCurrentBlockMapEntry{
/** @var string */
private $id;
/** @var int */
private $meta;
/** @var CompoundTag */
private $blockState;
public function __construct(string $id, int $meta, CompoundTag $blockState){
$this->id = $id;
$this->meta = $meta;
$this->blockState = $blockState;
}
public function __construct(
private string $id,
private int $meta,
private CompoundTag $blockState
){}
public function getId() : string{
return $this->id;

View File

@ -42,11 +42,11 @@ final class RuntimeBlockMapping{
use SingletonTrait;
/** @var int[] */
private $legacyToRuntimeMap = [];
private array $legacyToRuntimeMap = [];
/** @var int[] */
private $runtimeToLegacyMap = [];
private array $runtimeToLegacyMap = [];
/** @var CompoundTag[] */
private $bedrockKnownStates;
private array $bedrockKnownStates;
private static function make() : self{
return new self(

View File

@ -60,8 +60,7 @@ class TypeConverter{
private const PM_ID_TAG = "___Id___";
private const PM_META_TAG = "___Meta___";
/** @var int */
private $shieldRuntimeId;
private int $shieldRuntimeId;
public function __construct(){
//TODO: inject stuff via constructor

View File

@ -37,18 +37,13 @@ class EncryptionContext{
/** @var bool */
public static $ENABLED = true;
/** @var string */
private $key;
private string $key;
/** @var Cipher */
private $decryptCipher;
private Cipher $decryptCipher;
private int $decryptCounter = 0;
/** @var int */
private $decryptCounter = 0;
/** @var Cipher */
private $encryptCipher;
/** @var int */
private $encryptCounter = 0;
private Cipher $encryptCipher;
private int $encryptCounter = 0;
public function __construct(string $encryptionKey, string $algorithm, string $iv){
$this->key = $encryptionKey;

View File

@ -32,18 +32,11 @@ use pocketmine\network\mcpe\protocol\types\PlayerAction;
use pocketmine\player\Player;
class DeathPacketHandler extends PacketHandler{
/** @var Player */
private $player;
/** @var NetworkSession */
private $session;
private InventoryManager $inventoryManager;
public function __construct(Player $player, NetworkSession $session, InventoryManager $inventoryManager){
$this->player = $player;
$this->session = $session;
$this->inventoryManager = $inventoryManager;
}
public function __construct(
private Player $player,
private NetworkSession $session,
private InventoryManager $inventoryManager
){}
public function setUp() : void{
$this->session->sendDataPacket(RespawnPacket::create(

View File

@ -29,19 +29,10 @@ use pocketmine\network\mcpe\protocol\ClientToServerHandshakePacket;
* Handler responsible for awaiting client response from crypto handshake.
*/
class HandshakePacketHandler extends PacketHandler{
/**
* @var \Closure
* @phpstan-var \Closure() : void
*/
private $onHandshakeCompleted;
/**
* @phpstan-param \Closure() : void $onHandshakeCompleted
*/
public function __construct(\Closure $onHandshakeCompleted){
$this->onHandshakeCompleted = $onHandshakeCompleted;
}
public function __construct(private \Closure $onHandshakeCompleted){}
public function handleClientToServerHandshake(ClientToServerHandshakePacket $packet) : bool{
($this->onHandshakeCompleted)();

View File

@ -135,11 +135,6 @@ use const JSON_THROW_ON_ERROR;
class InGamePacketHandler extends PacketHandler{
private const MAX_FORM_RESPONSE_DEPTH = 2; //modal/simple will be 1, custom forms 2 - they will never contain anything other than string|int|float|bool|null
/** @var Player */
private $player;
/** @var NetworkSession */
private $session;
/** @var CraftingTransaction|null */
protected $craftingTransaction = null;
@ -151,13 +146,11 @@ class InGamePacketHandler extends PacketHandler{
/** @var bool */
public $forceMoveSync = false;
private InventoryManager $inventoryManager;
public function __construct(Player $player, NetworkSession $session, InventoryManager $inventoryManager){
$this->player = $player;
$this->session = $session;
$this->inventoryManager = $inventoryManager;
}
public function __construct(
private Player $player,
private NetworkSession $session,
private InventoryManager $inventoryManager
){}
public function handleText(TextPacket $packet) : bool{
if($packet->type === TextPacket::TYPE_CHAT){

View File

@ -51,32 +51,16 @@ use function is_array;
* Handles the initial login phase of the session. This handler is used as the initial state.
*/
class LoginPacketHandler extends PacketHandler{
/** @var Server */
private $server;
/** @var NetworkSession */
private $session;
/**
* @var \Closure
* @phpstan-var \Closure(PlayerInfo) : void
*/
private $playerInfoConsumer;
/**
* @var \Closure
* @phpstan-var \Closure(bool, bool, ?string, ?string) : void
*/
private $authCallback;
/**
* @phpstan-param \Closure(PlayerInfo) : void $playerInfoConsumer
* @phpstan-param \Closure(bool $isAuthenticated, bool $authRequired, ?string $error, ?string $clientPubKey) : void $authCallback
*/
public function __construct(Server $server, NetworkSession $session, \Closure $playerInfoConsumer, \Closure $authCallback){
$this->session = $session;
$this->server = $server;
$this->playerInfoConsumer = $playerInfoConsumer;
$this->authCallback = $authCallback;
}
public function __construct(
private Server $server,
private NetworkSession $session,
private \Closure $playerInfoConsumer,
private \Closure $authCallback
){}
public function handleLogin(LoginPacket $packet) : bool{
if(!$this->isCompatibleProtocol($packet->protocol)){

View File

@ -48,22 +48,12 @@ use function sprintf;
* Handler used for the pre-spawn phase of the session.
*/
class PreSpawnPacketHandler extends PacketHandler{
/** @var Server */
private $server;
/** @var Player */
private $player;
/** @var NetworkSession */
private $session;
private InventoryManager $inventoryManager;
public function __construct(Server $server, Player $player, NetworkSession $session, InventoryManager $inventoryManager){
$this->player = $player;
$this->server = $server;
$this->session = $session;
$this->inventoryManager = $inventoryManager;
}
public function __construct(
private Server $server,
private Player $player,
private NetworkSession $session,
private InventoryManager $inventoryManager
){}
public function setUp() : void{
$location = $this->player->getLocation();

View File

@ -52,27 +52,17 @@ use function substr;
class ResourcePacksPacketHandler extends PacketHandler{
private const PACK_CHUNK_SIZE = 128 * 1024; //128KB
/** @var NetworkSession */
private $session;
/** @var ResourcePackManager */
private $resourcePackManager;
/**
* @var \Closure
* @phpstan-var \Closure() : void
*/
private $completionCallback;
/** @var bool[][] uuid => [chunk index => hasSent] */
private $downloadedChunks = [];
private array $downloadedChunks = [];
/**
* @phpstan-param \Closure() : void $completionCallback
*/
public function __construct(NetworkSession $session, ResourcePackManager $resourcePackManager, \Closure $completionCallback){
$this->session = $session;
$this->resourcePackManager = $resourcePackManager;
$this->completionCallback = $completionCallback;
}
public function __construct(
private NetworkSession $session,
private ResourcePackManager $resourcePackManager,
private \Closure $completionCallback
){}
public function setUp() : void{
$resourcePackEntries = array_map(static function(ResourcePack $pack) : ResourcePackInfoEntry{

View File

@ -26,19 +26,10 @@ namespace pocketmine\network\mcpe\handler;
use pocketmine\network\mcpe\protocol\SetLocalPlayerAsInitializedPacket;
final class SpawnResponsePacketHandler extends PacketHandler{
/**
* @var \Closure
* @phpstan-var \Closure() : void
*/
private $responseCallback;
/**
* @phpstan-param \Closure() : void $responseCallback
*/
public function __construct(\Closure $responseCallback){
$this->responseCallback = $responseCallback;
}
public function __construct(private \Closure $responseCallback){}
public function handleSetLocalPlayerAsInitialized(SetLocalPlayerAsInitializedPacket $packet) : bool{
($this->responseCallback)();

View File

@ -26,12 +26,7 @@ namespace pocketmine\network\mcpe\raklib;
use raklib\server\ipc\InterThreadChannelReader;
final class PthreadsChannelReader implements InterThreadChannelReader{
/** @var \Threaded */
private $buffer;
public function __construct(\Threaded $buffer){
$this->buffer = $buffer;
}
public function __construct(private \Threaded $buffer){}
public function read() : ?string{
return $this->buffer->shift();

View File

@ -20,12 +20,7 @@ namespace pocketmine\network\mcpe\raklib;
use raklib\server\ipc\InterThreadChannelWriter;
final class PthreadsChannelWriter implements InterThreadChannelWriter{
/** @var \Threaded */
private $buffer;
public function __construct(\Threaded $buffer){
$this->buffer = $buffer;
}
public function __construct(private \Threaded $buffer){}
public function write(string $str) : void{
$this->buffer[] = $str;

View File

@ -62,31 +62,21 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{
private const MCPE_RAKNET_PACKET_ID = "\xfe";
/** @var Server */
private $server;
private Server $server;
private Network $network;
/** @var Network */
private $network;
/** @var int */
private $rakServerId;
/** @var RakLibServer */
private $rakLib;
private int $rakServerId;
private RakLibServer $rakLib;
/** @var NetworkSession[] */
private $sessions = [];
private array $sessions = [];
/** @var RakLibToUserThreadMessageReceiver */
private $eventReceiver;
/** @var UserToRakLibThreadMessageSender */
private $interface;
private RakLibToUserThreadMessageReceiver $eventReceiver;
private UserToRakLibThreadMessageSender $interface;
/** @var SleeperNotifier */
private $sleeper;
private SleeperNotifier $sleeper;
/** @var PacketBroadcaster */
private $broadcaster;
private PacketBroadcaster $broadcaster;
public function __construct(Server $server, string $ip, int $port, bool $ipV6){
$this->server = $server;

View File

@ -26,19 +26,12 @@ namespace pocketmine\network\mcpe\raklib;
use pocketmine\network\mcpe\PacketSender;
class RakLibPacketSender implements PacketSender{
private bool $closed = false;
/** @var int */
private $sessionId;
/** @var RakLibInterface */
private $handler;
/** @var bool */
private $closed = false;
public function __construct(int $sessionId, RakLibInterface $handler){
$this->sessionId = $sessionId;
$this->handler = $handler;
}
public function __construct(
private int $sessionId,
private RakLibInterface $handler
){}
public function send(string $payload, bool $immediate) : void{
if(!$this->closed){

View File

@ -59,29 +59,22 @@ use const SOL_UDP;
* or running on a different port than Query.
*/
final class DedicatedQueryNetworkInterface implements AdvancedNetworkInterface{
/** @var string */
private $ip;
/** @var int */
private $port;
/** @var \Logger */
private $logger;
private \Socket $socket;
/** @var Network */
private $network;
private Network $network;
/**
* @var int[] address => timeout time
* @phpstan-var array<string, int>
*/
private $blockedIps = [];
private array $blockedIps = [];
/** @var string[] */
private $rawPacketPatterns = [];
public function __construct(string $ip, int $port, bool $ipV6, \Logger $logger){
$this->ip = $ip;
$this->port = $port;
$this->logger = $logger;
private array $rawPacketPatterns = [];
public function __construct(
private string $ip,
private int $port,
bool $ipV6,
private \Logger $logger
){
$socket = @socket_create($ipV6 ? AF_INET6 : AF_INET, SOCK_DGRAM, SOL_UDP);
if($socket === false){
throw new \RuntimeException("Failed to create socket");

View File

@ -40,21 +40,17 @@ use function strlen;
use function substr;
class QueryHandler implements RawPacketHandler{
/** @var Server */
private $server;
/** @var string */
private $lastToken;
/** @var string */
private $token;
private string $lastToken;
private string $token;
/** @var \Logger */
private $logger;
private \Logger $logger;
public const HANDSHAKE = 9;
public const STATISTICS = 0;
public function __construct(Server $server){
$this->server = $server;
public function __construct(
private Server $server
){
$this->logger = new \PrefixedLogger($this->server->getLogger(), "Query Handler");
/*
@ -66,7 +62,7 @@ class QueryHandler implements RawPacketHandler{
packets can conflict with the MCPE ones.
*/
$this->regenerateToken();
$this->token = $this->generateToken();
$this->lastToken = $this->token;
}
@ -74,9 +70,13 @@ class QueryHandler implements RawPacketHandler{
return '/^\xfe\xfd.+$/s';
}
private function generateToken() : string{
return random_bytes(16);
}
public function regenerateToken() : void{
$this->lastToken = $this->token;
$this->token = random_bytes(16);
$this->token = $this->generateToken();
}
public static function getTokenString(string $token, string $salt) : int{

View File

@ -37,44 +37,31 @@ use function substr;
final class QueryInfo{
public const GAME_ID = "MINECRAFTPE";
/** @var string */
private $serverName;
/** @var bool */
private $listPlugins;
private string $serverName;
private bool $listPlugins;
/** @var Plugin[] */
private $plugins;
private array $plugins;
/** @var Player[] */
private $players;
private array $players;
/** @var string */
private $gametype;
/** @var string */
private $version;
/** @var string */
private $server_engine;
/** @var string */
private $map;
/** @var int */
private $numPlayers;
/** @var int */
private $maxPlayers;
/** @var string */
private $whitelist;
/** @var int */
private $port;
/** @var string */
private $ip;
private string $gametype;
private string $version;
private string $server_engine;
private string $map;
private int $numPlayers;
private int $maxPlayers;
private string $whitelist;
private int $port;
private string $ip;
/**
* @var string[]
* @phpstan-var array<string, string>
*/
private $extraData = [];
private array $extraData = [];
/** @var string|null */
private $longQueryCache = null;
/** @var string|null */
private $shortQueryCache = null;
private ?string $longQueryCache = null;
private ?string $shortQueryCache = null;
public function __construct(Server $server){
$this->serverName = $server->getMotd();

View File

@ -28,24 +28,17 @@ use pocketmine\utils\Internet;
use pocketmine\utils\InternetException;
final class UPnPNetworkInterface implements NetworkInterface{
private ?string $serviceURL = null;
/** @var string */
private $ip;
/** @var int */
private $port;
/** @var string|null */
private $serviceURL = null;
/** @var \Logger */
private $logger;
public function __construct(\Logger $logger, string $ip, int $port){
public function __construct(
private \Logger $logger,
private string $ip,
private int $port
){
if(!Internet::$online){
throw new \RuntimeException("Server is offline");
}
$this->ip = $ip;
$this->port = $port;
$this->logger = new \PrefixedLogger($logger, "UPnP Port Forwarder");
}