<PackageReference Include="SSH.NET" Version="2024.2.0" />

Zlib

public class Zlib : Compressor
Represents the "zlib" compression algorithm.
using Org.BouncyCastle.Utilities.Zlib; using System.IO; namespace Renci.SshNet.Compression { public class Zlib : Compressor { private readonly ZOutputStream _compressor; private readonly ZOutputStream _decompressor; private MemoryStream _compressorStream; private MemoryStream _decompressorStream; private bool _isDisposed; public override string Name => "zlib"; public Zlib() : this(false) { } protected Zlib(bool delayedCompression) : base(delayedCompression) { _compressorStream = new MemoryStream(); _decompressorStream = new MemoryStream(); _compressor = new ZOutputStream(_compressorStream, -1) { FlushMode = 1 }; _decompressor = new ZOutputStream(_decompressorStream) { FlushMode = 1 }; } protected override byte[] CompressCore(byte[] data, int offset, int length) { _compressorStream.SetLength(0); _compressor.Write(data, offset, length); _compressor.Flush(); return _compressorStream.ToArray(); } protected override byte[] DecompressCore(byte[] data, int offset, int length) { _decompressorStream.SetLength(0); _decompressor.Write(data, offset, length); _decompressor.Flush(); return _decompressorStream.ToArray(); } protected override void Dispose(bool disposing) { base.Dispose(disposing); if (!_isDisposed && disposing) { MemoryStream compressorStream = _compressorStream; if (compressorStream != null) { compressorStream.Dispose(); _compressorStream = null; } MemoryStream decompressorStream = _decompressorStream; if (decompressorStream != null) { decompressorStream.Dispose(); _decompressorStream = null; } _isDisposed = true; } } } }