void ProcessArchiveStreams(ArchiveItem archiveItem, IOriginItem originItem) { using (Stream archiveStream = archiveItem.OpenDataStream()) { if (archiveStream != null) { if (Progress != null) { Progress( this, new OriginProgressEventArgs(State.BeginStream, originItem) ); } using (Stream originStream = originItem.CreateStream()) { byte[] hash; streamPump.Progress = delegate(long done, long total) { if (Progress != null) { Progress( this, new OriginProgressEventArgs(State.Block, originItem, done, total) ); } }; streamPump.Copy(archiveStream, originStream, out hash); //archiveStream.Hash = hash; } } if (Progress != null) { Progress( this, new OriginProgressEventArgs(State.EndStream, originItem) ); } } }
bool ProcessArchiveItem(ArchiveItem archiveItem) { bool same = true; using (Stream outputStream = archiveItem.OpenDataStream()) { if (outputStream != null) { if (!streamVerifier.Verify(outputStream, archiveItem.DataStreamHash)) { same = false; } } } foreach (ArchiveItem archiveSubItem in archiveItem.ChildItems) { if (!ProcessArchiveItem(archiveSubItem)) { same = false; } } return(same); }
bool ProcessArchiveItem(ArchiveItem archiveItem) { bool same = true; using (Stream outputStream = archiveItem.OpenDataStream()) { if (outputStream != null) { if (!streamVerifier.Verify (outputStream, archiveItem.DataStreamHash)) same = false; } } foreach (ArchiveItem archiveSubItem in archiveItem.ChildItems) { if (!ProcessArchiveItem (archiveSubItem)) same = false; } return same; }
bool ProcessOriginItem(ArchiveItem archiveItem, IOriginItem originItem, VerificationType verificationType) { bool same = true; logger.InfoFormat ("Verifying {0}", originItem.Name); using (Stream inputStream = originItem.OpenStream()) { if (inputStream != null) { if (verificationType == VerificationType.ArchiveHashWithOriginData) { if (!streamVerifier.Verify (inputStream, archiveItem.DataStreamHash)) same = false; } else if (verificationType == VerificationType.ArchiveDataWithOriginData) { using (Stream outputStream = archiveItem.OpenDataStream()) { if (outputStream != null) { if (!streamVerifier.Verify (inputStream, outputStream)) same = false; } else { logger.WarnFormat ("Only present in Origin: {0}", originItem.Name); same = false; } } } else { throw new InvalidOperationException (); } } else { using (Stream outputStream = archiveItem.OpenDataStream()) { if (outputStream != null) { logger.WarnFormat ("Only present in Archive: {0}", archiveItem.Name); same = false; } } } } var childItems = archiveItem.ChildItems.ToList (); foreach (IOriginItem subOriginItem in originItem.ChildItems) { var item = childItems.SingleOrDefault (p => p.Name == subOriginItem.Name); if (item != null) { childItems.Remove (item); if (!ProcessOriginItem (item, subOriginItem, verificationType)) same = false; } else { logger.WarnFormat ("Only present in Origin: {0}", subOriginItem.Name); same = false; } } foreach (var childItem in childItems) { logger.WarnFormat ("Only present in Archive: {0}", childItem.Name); same = false; } return same; }
void ProcessArchiveStreams(ArchiveItem archiveItem, IOriginItem originItem) { using (Stream archiveStream = archiveItem.OpenDataStream()) { if (archiveStream != null) { if (Progress != null) Progress ( this, new OriginProgressEventArgs (State.BeginStream, originItem) ); using (Stream originStream = originItem.CreateStream ()) { byte[] hash; streamPump.Progress = delegate(long done, long total) { if (Progress != null) Progress ( this, new OriginProgressEventArgs (State.Block, originItem, done, total) ); }; streamPump.Copy (archiveStream, originStream, out hash); //archiveStream.Hash = hash; } } if (Progress != null) Progress ( this, new OriginProgressEventArgs (State.EndStream, originItem) ); } }
bool ProcessOriginItem(ArchiveItem archiveItem, IOriginItem originItem, VerificationType verificationType) { bool same = true; logger.InfoFormat("Verifying {0}", originItem.Name); using (Stream inputStream = originItem.OpenStream()) { if (inputStream != null) { if (verificationType == VerificationType.ArchiveHashWithOriginData) { if (!streamVerifier.Verify(inputStream, archiveItem.DataStreamHash)) { same = false; } } else if (verificationType == VerificationType.ArchiveDataWithOriginData) { using (Stream outputStream = archiveItem.OpenDataStream()) { if (outputStream != null) { if (!streamVerifier.Verify(inputStream, outputStream)) { same = false; } } else { logger.WarnFormat("Only present in Origin: {0}", originItem.Name); same = false; } } } else { throw new InvalidOperationException(); } } else { using (Stream outputStream = archiveItem.OpenDataStream()) { if (outputStream != null) { logger.WarnFormat("Only present in Archive: {0}", archiveItem.Name); same = false; } } } } var childItems = archiveItem.ChildItems.ToList(); foreach (IOriginItem subOriginItem in originItem.ChildItems) { var item = childItems.SingleOrDefault(p => p.Name == subOriginItem.Name); if (item != null) { childItems.Remove(item); if (!ProcessOriginItem(item, subOriginItem, verificationType)) { same = false; } } else { logger.WarnFormat("Only present in Origin: {0}", subOriginItem.Name); same = false; } } foreach (var childItem in childItems) { logger.WarnFormat("Only present in Archive: {0}", childItem.Name); same = false; } return(same); }