コード例 #1
0
        void WriteChunkSignatures(Stream stream, ISignatureWriter signatureWriter)
        {
            var checksumAlgorithm = RollingChecksumAlgorithm;
            var hashAlgorithm = HashAlgorithm;

            ProgressReporter.ReportProgress("Building signatures", 0, stream.Length);
            stream.Seek(0, SeekOrigin.Begin);

            long start = 0;
            int read;
            var block = new byte[ChunkSize];
            while ((read = stream.Read(block, 0, block.Length)) > 0)
            {
                signatureWriter.WriteChunk(new ChunkSignature
                {
                    StartOffset = start,
                    Length = (short)read,
                    Hash = hashAlgorithm.ComputeHash(block, 0, read),
                    RollingChecksum = checksumAlgorithm.Calculate(block, 0, read)
                });

                start += read;
                ProgressReporter.ReportProgress("Building signatures", start, stream.Length);
            }
        }
コード例 #2
0
        void WriteChunkSignatures(Stream stream, ISignatureWriter signatureWriter)
        {
            var checksumAlgorithm = RollingChecksumAlgorithm;
            var hashAlgorithm     = HashAlgorithm;

            //ProgressReporter.ReportProgress("Building signatures", 0, stream.Length);
            stream.Seek(0, SeekOrigin.Begin);

            long start = 0;
            int  read;
            var  block = new byte[ChunkSize];

            while ((read = stream.Read(block, 0, block.Length)) > 0)
            {
                signatureWriter.WriteChunk(new ChunkSignature
                {
                    StartOffset     = start,
                    Length          = (short)read,
                    Hash            = hashAlgorithm.ComputeHash(block, 0, read),
                    RollingChecksum = checksumAlgorithm.Calculate(block, 0, read)
                });

                start += read;
                ProgressReporter.ReportProgress("Building signatures", start, stream.Length);
            }
        }
コード例 #3
0
        void WriteMetadata(Stream stream, ISignatureWriter signatureWriter)
        {
            ProgressReporter.ReportProgress("Hashing file", 0, stream.Length);
            stream.Seek(0, SeekOrigin.Begin);

            signatureWriter.WriteMetadata(HashAlgorithm, RollingChecksumAlgorithm);

            ProgressReporter.ReportProgress("Hashing file", stream.Length, stream.Length);
        }
コード例 #4
0
        void WriteMetadata(Stream stream, ISignatureWriter signatureWriter)
        {
            ProgressReporter.ReportProgress("Hashing file", 0, stream.Length);
            stream.Seek(0, SeekOrigin.Begin);

            var hash = HashAlgorithm.ComputeHash(stream);

            signatureWriter.WriteMetadata(HashAlgorithm, RollingChecksumAlgorithm, hash);

            ProgressReporter.ReportProgress("Hashing file", stream.Length, stream.Length);
        }
コード例 #5
0
 public void Build(Stream stream, ISignatureWriter signatureWriter)
 {
     WriteMetadata(stream, signatureWriter);
     WriteChunkSignatures(stream, signatureWriter);
 }
コード例 #6
0
 public void Build(Stream stream, ISignatureWriter signatureWriter)
 {
     WriteMetadata(stream, signatureWriter);
     WriteChunkSignatures(stream, signatureWriter);
 }
コード例 #7
0
        void WriteMetadata(Stream stream, ISignatureWriter signatureWriter)
        {
            stream.Seek(0, SeekOrigin.Begin);

            signatureWriter.WriteMetadata(ChunkSize, HashAlgorithm, RollingChecksumAlgorithm);
        }