Example #1
0
        public int Execute(string[] commandLineArguments)
        {
            options.Parse(commandLineArguments);

            if (string.IsNullOrWhiteSpace(deltaFilePath))
            {
                throw new OptionException("No delta file was specified", "delta-file");
            }

            deltaFilePath = Path.GetFullPath(deltaFilePath);

            if (!File.Exists(deltaFilePath))
            {
                throw new FileNotFoundException("File not found: " + deltaFilePath, deltaFilePath);
            }

            using (var deltaStream = new FileStream(deltaFilePath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                var reader = new BinaryDeltaReader(deltaStream, null);

                reader.ApplyAsync(data =>
                {
                    if (data.Length > 20)
                    {
                        Console.WriteLine("Data: ({0} bytes): {1}...", data.Length,
                                          BitConverter.ToString(data.Take(20).ToArray()));
                    }
                    else
                    {
                        Console.WriteLine("Data: ({0} bytes): {1}", data.Length, BitConverter.ToString(data.ToArray()));
                    }

                    return(Task.CompletedTask);
                },
                                  (start, offset) =>
                {
                    Console.WriteLine("Copy: {0:X} to {1:X}", start, offset);
                    return(Task.CompletedTask);
                }).GetAwaiter().GetResult();
            }

            return(0);
        }