minCompressionSize; } /** * @throws DecompressionException */ public function decompress(string $payload) : string{ $result = @zlib_decode($payload, $this->maxDecompressionSize); if($result === false){ throw new DecompressionException("Failed to decompress data"); } return $result; } private static function zlib_encode(string $data, int $level) : string{ return Utils::assumeNotFalse(zlib_encode($data, ZLIB_ENCODING_RAW, $level), "ZLIB compression failed"); } public function compress(string $payload) : string{ $compressible = $this->minCompressionSize !== null && strlen($payload) >= $this->minCompressionSize; if(function_exists('libdeflate_deflate_compress')){ return $compressible ? libdeflate_deflate_compress($payload, $this->level) : self::zlib_encode($payload, 0); } return self::zlib_encode($payload, $compressible ? $this->level : 0); } }