mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-14 17:59:41 +00:00
Make timings for player network more detailed
This commit is contained in:
parent
2bf6764112
commit
488c03c200
@ -1877,7 +1877,7 @@ class Server{
|
|||||||
if(empty($packets)){
|
if(empty($packets)){
|
||||||
throw new \InvalidArgumentException("Cannot send empty batch");
|
throw new \InvalidArgumentException("Cannot send empty batch");
|
||||||
}
|
}
|
||||||
Timings::$playerNetworkTimer->startTiming();
|
Timings::$playerNetworkSendCompressTimer->startTiming();
|
||||||
|
|
||||||
/** @var NetworkSession[] $targets */
|
/** @var NetworkSession[] $targets */
|
||||||
$targets = [];
|
$targets = [];
|
||||||
@ -1908,7 +1908,7 @@ class Server{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Timings::$playerNetworkTimer->stopTiming();
|
Timings::$playerNetworkSendCompressTimer->stopTiming();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -146,21 +146,27 @@ class NetworkSession{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($this->cipher !== null){
|
if($this->cipher !== null){
|
||||||
|
Timings::$playerNetworkReceiveDecryptTimer->startTiming();
|
||||||
try{
|
try{
|
||||||
$payload = $this->cipher->decrypt($payload);
|
$payload = $this->cipher->decrypt($payload);
|
||||||
}catch(\InvalidArgumentException $e){
|
}catch(\InvalidArgumentException $e){
|
||||||
$this->server->getLogger()->debug("Encrypted packet from " . $this->ip . " " . $this->port . ": " . bin2hex($payload));
|
$this->server->getLogger()->debug("Encrypted packet from " . $this->ip . " " . $this->port . ": " . bin2hex($payload));
|
||||||
$this->disconnect("Packet decryption error: " . $e->getMessage());
|
$this->disconnect("Packet decryption error: " . $e->getMessage());
|
||||||
return;
|
return;
|
||||||
|
}finally{
|
||||||
|
Timings::$playerNetworkReceiveDecryptTimer->stopTiming();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Timings::$playerNetworkReceiveDecompressTimer->startTiming();
|
||||||
try{
|
try{
|
||||||
$stream = new PacketStream(NetworkCompression::decompress($payload));
|
$stream = new PacketStream(NetworkCompression::decompress($payload));
|
||||||
}catch(\ErrorException $e){
|
}catch(\ErrorException $e){
|
||||||
$this->server->getLogger()->debug("Failed to decompress packet from " . $this->ip . " " . $this->port . ": " . bin2hex($payload));
|
$this->server->getLogger()->debug("Failed to decompress packet from " . $this->ip . " " . $this->port . ": " . bin2hex($payload));
|
||||||
$this->disconnect("Compressed packet batch decode error (incompatible game version?)", false);
|
$this->disconnect("Compressed packet batch decode error (incompatible game version?)", false);
|
||||||
return;
|
return;
|
||||||
|
}finally{
|
||||||
|
Timings::$playerNetworkReceiveDecompressTimer->stopTiming();
|
||||||
}
|
}
|
||||||
|
|
||||||
while(!$stream->feof() and $this->connected){
|
while(!$stream->feof() and $this->connected){
|
||||||
@ -206,7 +212,9 @@ class NetworkSession{
|
|||||||
|
|
||||||
public function sendEncoded(string $payload, bool $immediate = false) : void{
|
public function sendEncoded(string $payload, bool $immediate = false) : void{
|
||||||
if($this->cipher !== null){
|
if($this->cipher !== null){
|
||||||
|
Timings::$playerNetworkSendEncryptTimer->startTiming();
|
||||||
$payload = $this->cipher->encrypt($payload);
|
$payload = $this->cipher->encrypt($payload);
|
||||||
|
Timings::$playerNetworkSendEncryptTimer->stopTiming();
|
||||||
}
|
}
|
||||||
$this->interface->putPacket($this, $payload, $immediate);
|
$this->interface->putPacket($this, $payload, $immediate);
|
||||||
}
|
}
|
||||||
|
@ -42,10 +42,18 @@ abstract class Timings{
|
|||||||
/** @var TimingsHandler */
|
/** @var TimingsHandler */
|
||||||
public static $titleTickTimer;
|
public static $titleTickTimer;
|
||||||
/** @var TimingsHandler */
|
/** @var TimingsHandler */
|
||||||
public static $playerNetworkTimer;
|
public static $playerNetworkSendTimer;
|
||||||
|
/** @var TimingsHandler */
|
||||||
|
public static $playerNetworkSendCompressTimer;
|
||||||
|
/** @var TimingsHandler */
|
||||||
|
public static $playerNetworkSendEncryptTimer;
|
||||||
/** @var TimingsHandler */
|
/** @var TimingsHandler */
|
||||||
public static $playerNetworkReceiveTimer;
|
public static $playerNetworkReceiveTimer;
|
||||||
/** @var TimingsHandler */
|
/** @var TimingsHandler */
|
||||||
|
public static $playerNetworkReceiveDecompressTimer;
|
||||||
|
/** @var TimingsHandler */
|
||||||
|
public static $playerNetworkReceiveDecryptTimer;
|
||||||
|
/** @var TimingsHandler */
|
||||||
public static $playerChunkOrderTimer;
|
public static $playerChunkOrderTimer;
|
||||||
/** @var TimingsHandler */
|
/** @var TimingsHandler */
|
||||||
public static $playerChunkSendTimer;
|
public static $playerChunkSendTimer;
|
||||||
@ -112,8 +120,15 @@ abstract class Timings{
|
|||||||
self::$memoryManagerTimer = new TimingsHandler("Memory Manager");
|
self::$memoryManagerTimer = new TimingsHandler("Memory Manager");
|
||||||
self::$garbageCollectorTimer = new TimingsHandler("Garbage Collector", self::$memoryManagerTimer);
|
self::$garbageCollectorTimer = new TimingsHandler("Garbage Collector", self::$memoryManagerTimer);
|
||||||
self::$titleTickTimer = new TimingsHandler("Console Title Tick");
|
self::$titleTickTimer = new TimingsHandler("Console Title Tick");
|
||||||
self::$playerNetworkTimer = new TimingsHandler("Player Network Send");
|
|
||||||
|
self::$playerNetworkSendTimer = new TimingsHandler("Player Network Send");
|
||||||
|
self::$playerNetworkSendCompressTimer = new TimingsHandler("** Player Network Send - Compression", self::$playerNetworkSendTimer);
|
||||||
|
self::$playerNetworkSendEncryptTimer = new TimingsHandler("** Player Network Send - Encryption", self::$playerNetworkSendTimer);
|
||||||
|
|
||||||
self::$playerNetworkReceiveTimer = new TimingsHandler("Player Network Receive");
|
self::$playerNetworkReceiveTimer = new TimingsHandler("Player Network Receive");
|
||||||
|
self::$playerNetworkReceiveDecompressTimer = new TimingsHandler("** Player Network Receive - Decompression", self::$playerNetworkReceiveTimer);
|
||||||
|
self::$playerNetworkReceiveDecryptTimer = new TimingsHandler("** Player Network Receive - Decryption", self::$playerNetworkReceiveTimer);
|
||||||
|
|
||||||
self::$playerChunkOrderTimer = new TimingsHandler("Player Order Chunks");
|
self::$playerChunkOrderTimer = new TimingsHandler("Player Order Chunks");
|
||||||
self::$playerChunkSendTimer = new TimingsHandler("Player Send Chunks");
|
self::$playerChunkSendTimer = new TimingsHandler("Player Send Chunks");
|
||||||
self::$connectionTimer = new TimingsHandler("Connection Handler");
|
self::$connectionTimer = new TimingsHandler("Connection Handler");
|
||||||
@ -218,7 +233,7 @@ abstract class Timings{
|
|||||||
public static function getSendDataPacketTimings(DataPacket $pk) : TimingsHandler{
|
public static function getSendDataPacketTimings(DataPacket $pk) : TimingsHandler{
|
||||||
if(!isset(self::$packetSendTimingMap[$pk::NETWORK_ID])){
|
if(!isset(self::$packetSendTimingMap[$pk::NETWORK_ID])){
|
||||||
$pkName = (new \ReflectionClass($pk))->getShortName();
|
$pkName = (new \ReflectionClass($pk))->getShortName();
|
||||||
self::$packetSendTimingMap[$pk::NETWORK_ID] = new TimingsHandler("** sendPacket - " . $pkName . " [0x" . dechex($pk::NETWORK_ID) . "]", self::$playerNetworkTimer);
|
self::$packetSendTimingMap[$pk::NETWORK_ID] = new TimingsHandler("** sendPacket - " . $pkName . " [0x" . dechex($pk::NETWORK_ID) . "]", self::$playerNetworkSendTimer);
|
||||||
}
|
}
|
||||||
|
|
||||||
return self::$packetSendTimingMap[$pk::NETWORK_ID];
|
return self::$packetSendTimingMap[$pk::NETWORK_ID];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user