예제 #1
0
        public void DecoderStillWorksWhenReadingSlowFile(string original, bool high, int block)
        {
            original = Tools.FindFile($".corpus/{original}");

            var encoded = Path.GetTempFileName();
            var decoded = Path.GetTempFileName();

            try
            {
                TestedLZ4.Encode(original, encoded, high, block, Mem.K64);

                using (var source = LZ4Legacy.Decode(Tools.Slow(File.OpenRead(encoded))))
                    using (var target = File.Create(decoded))
                    {
                        var buffer = new byte[Mem.K64];
                        while (true)
                        {
                            var read = source.Read(buffer, 0, buffer.Length);
                            if (read == 0)
                            {
                                break;
                            }

                            target.Write(buffer, 0, read);
                        }
                    }

                Tools.SameFiles(original, decoded);
            }
            finally
            {
                File.Delete(encoded);
                File.Delete(decoded);
            }
        }
예제 #2
0
        public byte[] Unwrap(byte[] buffer, int head, int tail, bool reference)
        {
            var length = buffer.Length;
            var input  = new byte[length + head + tail];

            for (var i = 0; i < input.Length; i++)
            {
                input[i] = 0xCD;
            }
            Buffer.BlockCopy(buffer, 0, input, head, length);

            return(reference
                                ? ReferenceLZ4.Unwrap(input, head)
                                : LZ4Legacy.Unwrap(input, head));
        }
예제 #3
0
        public static void Decode(string encoded, string decoded, int chunkSize)
        {
            using (var source = LZ4Legacy.Decode(File.OpenRead(encoded)))
                using (var target = File.Create(decoded))
                {
                    var buffer = new byte[chunkSize];
                    while (true)
                    {
                        var read = source.Read(buffer, 0, buffer.Length);
                        if (read == 0)
                        {
                            break;
                        }

                        target.Write(buffer, 0, read);
                    }
                }
        }
예제 #4
0
        public static void Encode(
            string original, string encoded, bool high, int block, int chunk)
        {
            using (var input = File.OpenRead(original))
                using (var encode = LZ4Legacy.Encode(File.Create(encoded), high, block))
                {
                    var buffer = new byte[chunk];
                    while (true)
                    {
                        var read = input.Read(buffer, 0, buffer.Length);
                        if (read == 0)
                        {
                            break;
                        }

                        encode.Write(buffer, 0, read);
                    }
                }
        }