20    public const CLIENT_DISCONNECT = 0;
 
   21    public const SERVER_DISCONNECT = 1;
 
   22    public const PEER_TIMEOUT = 2;
 
   23    public const CLIENT_RECONNECT = 3;
 
   24    public const SERVER_SHUTDOWN = 4; 
 
   25    public const SPLIT_PACKET_TOO_LARGE = 5;
 
   26    public const SPLIT_PACKET_TOO_MANY_CONCURRENT = 6;
 
   27    public const SPLIT_PACKET_INVALID_PART_INDEX = 7;
 
   28    public const SPLIT_PACKET_INCONSISTENT_HEADER = 8;
 
   30    public static function toString(
int $reason) : 
string{
 
   31        return match($reason){
 
   32            self::CLIENT_DISCONNECT => 
"client disconnect",
 
   33            self::SERVER_DISCONNECT => 
"server disconnect",
 
   34            self::PEER_TIMEOUT => 
"timeout",
 
   35            self::CLIENT_RECONNECT => 
"new session established on same address and port",
 
   36            self::SERVER_SHUTDOWN => 
"server shutdown",
 
   37            self::SPLIT_PACKET_TOO_LARGE => 
"received packet split into more parts than allowed",
 
   38            self::SPLIT_PACKET_TOO_MANY_CONCURRENT => 
"too many received split packets being reassembled at once",
 
   39            self::SPLIT_PACKET_INVALID_PART_INDEX => 
"invalid split packet part index",
 
   40            self::SPLIT_PACKET_INCONSISTENT_HEADER => 
"received split packet header inconsistent with previous fragments",
 
   41            default => 
"Unknown reason $reason"