using System.IO; namespace ScreenConnect; public class DeflatedFile : IStreamSave { private DeflateWrapper deflateWrapper; private object contentToDeflate; public long ContentByteCountFromLastSave { get; private set; } public DeflatedFile(DeflateWrapper deflateWrapper, object contentToDeflate) { this.deflateWrapper = deflateWrapper; this.contentToDeflate = contentToDeflate.AssertArgumentNonNull("contentToDeflate"); } public void Save(Stream stream) { using DeflateEncoder deflateEncoder = new DeflateEncoder(CoderCompressionLevel.Default, CoderCompressionStrategy.Default, deflateWrapper); using CoderStream coderStream = CoderStream.Create(stream, deflateEncoder, encodeOrDecode: true); Extensions.WriteContent(contentToDeflate, coderStream); coderStream.Flush(); ContentByteCountFromLastSave = deflateEncoder.TotalInputByteCount; } }