Example #1
0
        public static CompressResult Compress([NotNull] Stream inputFile, [NotNull] Stream compressFile = null,
                                              int blockSize = 0x100000, Lz4Mode mode = 0, Action <CompressResult> blockCallback = null)
        {
            long position;

            if (inputFile == null)
            {
                throw new ArgumentNullException(nameof(inputFile));
            }
            if (compressFile == null)
            {
                throw new ArgumentNullException(nameof(compressFile));
            }
            CompressResult result = new CompressResult();

            byte[] buffer = new byte[blockSize];
            try
            {
                position = compressFile.Position;
            }
            catch (Exception)
            {
                position = -1L;
                result.CompressedBytes = -1L;
            }
            using (Lz4CompressionStream stream = new Lz4CompressionStream(compressFile, 0x100000, mode))
            {
                goto Label_00E9;
Label_006D:
                int num2 = inputFile.Read(buffer, 0, buffer.Length);
                if (num2 == 0)
                {
                    return(result);
                }
                result.Bytes += num2;
                stream.Write(buffer, 0, num2);
                if (position != -1L)
                {
                    long num3 = compressFile.Position;
                    result.CompressedBytes += num3 - position;
                    position = num3;
                }
                if (blockCallback != null)
                {
                    blockCallback(result);
                }
Label_00E9:
                goto Label_006D;
            }
        }
Example #2
0
 public static CompressResult Compress([NotNull] Stream inputFile, [NotNull] Stream compressFile = null, 
     int blockSize = 0x100000, Lz4Mode mode = 0, Action<CompressResult> blockCallback = null)
 {
     long position;
     if (inputFile == null)
     {
         throw new ArgumentNullException("inputFile");
     }
     if (compressFile == null)
     {
         throw new ArgumentNullException("compressFile");
     }
     CompressResult result = new CompressResult();
     byte[] buffer = new byte[blockSize];
     try
     {
         position = compressFile.Position;
     }
     catch (Exception)
     {
         position = -1L;
         result.CompressedBytes = -1L;
     }
     using (Lz4CompressionStream stream = new Lz4CompressionStream(compressFile, 0x100000, mode))
     {
         goto Label_00E9;
     Label_006D:
         int num2 = inputFile.Read(buffer, 0, buffer.Length);
         if (num2 == 0)
         {
             return result;
         }
         result.Bytes += num2;
         stream.Write(buffer, 0, num2);
         if (position != -1L)
         {
             long num3 = compressFile.Position;
             result.CompressedBytes += num3 - position;
             position = num3;
         }
         if (blockCallback != null)
         {
             blockCallback(result);
         }
     Label_00E9:
         goto Label_006D;
     }
 }
Example #3
0
        public static CompressResult Decompress([NotNull] Stream compressedFile, [NotNull] Stream outputFile, int bufferSize = 0x100000, Action <CompressResult> blockCallback = null)
        {
            long position;

            if (compressedFile == null)
            {
                throw new ArgumentNullException(nameof(compressedFile));
            }
            if (outputFile == null)
            {
                throw new ArgumentNullException(nameof(outputFile));
            }
            byte[]         buffer = new byte[bufferSize];
            CompressResult result = new CompressResult();

            try
            {
                position = compressedFile.Position;
            }
            catch (Exception)
            {
                position     = -1L;
                result.Bytes = -1L;
            }
            using (Lz4DecompressionStream stream = new Lz4DecompressionStream(compressedFile))
            {
                int num2;
                while ((num2 = stream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    outputFile.Write(buffer, 0, num2);
                    result.CompressedBytes += num2;
                    if (position != -1L)
                    {
                        long num3 = compressedFile.Position;
                        result.Bytes += num3 - position;
                        position      = num3;
                    }
                    if (blockCallback != null)
                    {
                        blockCallback(result);
                    }
                }
            }
            return(result);
        }
Example #4
0
 public static CompressResult Decompress([NotNull] Stream compressedFile, [NotNull] Stream outputFile, int bufferSize = 0x100000, Action<CompressResult> blockCallback = null)
 {
     long position;
     if (compressedFile == null)
     {
         throw new ArgumentNullException("compressedFile");
     }
     if (outputFile == null)
     {
         throw new ArgumentNullException("outputFile");
     }
     byte[] buffer = new byte[bufferSize];
     CompressResult result = new CompressResult();
     try
     {
         position = compressedFile.Position;
     }
     catch (Exception)
     {
         position = -1L;
         result.Bytes = -1L;
     }
     using (Lz4DecompressionStream stream = new Lz4DecompressionStream(compressedFile))
     {
         int num2;
         while ((num2 = stream.Read(buffer, 0, buffer.Length)) > 0)
         {
             outputFile.Write(buffer, 0, num2);
             result.CompressedBytes += num2;
             if (position != -1L)
             {
                 long num3 = compressedFile.Position;
                 result.Bytes += num3 - position;
                 position = num3;
             }
             if (blockCallback != null)
             {
                 blockCallback(result);
             }
         }
     }
     return result;
 }