private async void ExtractFanoWorker(object sender, DoWorkEventArgs e)
        {
            long progress = 0;
            var  reader   = new BufferedReader(2000000, mInputStreamFanoO);
            var  writer   = new BufferedWriter(2000000, mOutputStreamFanoO);
            var  len      = mInputStreamFanoO.Length;

            if (len == 0)
            {
                len = 1;
            }

            var extractor = new FanoEncoder(reader, writer);

            extractor.WordLength   += (x, y) => len = y / x * 8;
            extractor.WordsWritten += x =>
            {
                progress += x;
            };
            Timer t = new Timer(o => mFanoOWorker.ReportProgress(Convert.ToInt32(progress * 100 / len)), null, 0, 25);

            await extractor.Decode();

            t.Dispose();
            await writer.FlushBuffer();

            mInputStreamFanoO.Close();
            mOutputStreamFanoO.Close();
        }
        private async void CompressFanoWorker(object sender, DoWorkEventArgs e)
        {
            long progress = 0;
            var  reader   = new BufferedReader(2000000, mInputStreamFanoI);
            var  writer   = new BufferedWriter(2000000, mOutputStreamFanoI);
            var  len      = mInputStreamFanoI.Length / mWordLength * 8;

            if (len == 0)
            {
                len = 1;
            }

            var compressor = new FanoEncoder(reader, writer);

            compressor.WordsWritten += x =>
            {
                progress += x;
            };
            Timer t = new Timer(o => mFanoIWorker.ReportProgress(Convert.ToInt32(progress * 100 / len)), null, 0, 25);

            await compressor.Encode(mWordLength);

            t.Dispose();
            await writer.FlushBuffer();

            mInputStreamFanoI.Close();
            mOutputStreamFanoI.Close();
        }
        private async void CompressLz77Worker(object sender, DoWorkEventArgs e)
        {
            long progress = 0;
            var  reader   = new BufferedReader(2000000, mInputStreamLz77I);
            var  writer   = new BufferedWriter(2000000, mOutputStreamLz77I);
            var  len      = mInputStreamLz77I.Length;

            if (len == 0)
            {
                len = 1;
            }

            var compressor = await LZ77.Compressor.Create(reader.ReadByte, writer.WriteCustomLength, mHistory, mPresent);

            compressor.WordsWritten += x =>
            {
                progress += x;
                //mLz77IWorker.ReportProgress(Convert.ToInt32(progress / (len / 100)));
            };// mLz77CompressProgress += x;
            Timer t = new Timer(o => mLz77IWorker.ReportProgress(Convert.ToInt32(progress * 100 / len)), null, 0, 25);

            await compressor.Compress((ulong)len);

            t.Dispose();
            await writer.FlushBuffer();

            mInputStreamLz77I.Close();
            mOutputStreamLz77I.Close();
        }
Example #4
0
        static async Task Main(string[] args)
        {
            var ifStream   = new FileStream("sample.txt", FileMode.Open, FileAccess.Read);
            var reader     = new BufferedReader(90, ifStream);
            var ofStream   = new FileStream("output.lz77", FileMode.Create, FileAccess.Write);
            var writer     = new BufferedWriter(90, ofStream);
            var compressor = await Compressor.Create(reader.ReadByte, writer.WriteCustomLength, 1024, 256);

            await compressor.Compress((ulong)ifStream.Length);

            await writer.FlushBuffer();

            ifStream.Close();
            ofStream.Close();

            ifStream = new FileStream("output.lz77", FileMode.Open, FileAccess.Read);
            reader   = new BufferedReader(90, ifStream);
            ofStream = new FileStream("output.txt", FileMode.Create, FileAccess.Write);
            writer   = new BufferedWriter(9, ofStream);
            var extr = new Extractor(reader.ReadCustomLength, writer.WriteCustomLength);
            await extr.Extract();

            await writer.FlushBuffer();

            ifStream.Close();
            ofStream.Close();
        }
        private async void ExtractLz77Worker(object sender, DoWorkEventArgs e)
        {
            long progress = 0;
            var  reader   = new BufferedReader(2000000, mInputStreamLz77O);
            var  writer   = new BufferedWriter(2000000, mOutputStreamLz77O);
            var  len      = 1L;

            var extractor = new Extractor(reader.ReadCustomLength, writer.WriteCustomLength);

            extractor.FileLength   += x => len = x;
            extractor.WordsWritten += x =>
            {
                progress += x;
            };
            Timer t = new Timer(o => mLz77OWorker.ReportProgress(Convert.ToInt32(progress * 100 / len)), null, 0, 25);

            await extractor.Extract();

            t.Dispose();
            await writer.FlushBuffer();

            mInputStreamLz77O.Close();
            mOutputStreamLz77O.Close();
        }