public OriginProgressEventArgs(State state, IOriginItem originItem, long done, long total) { State = state; OriginItem = originItem; Done = done; Total = total; }
void ProcessArchiveChildItems(ArchiveItem archiveItem, IOriginItem originItem) { bool firstDone = false; foreach (ArchiveItem archiveSubItem in archiveItem.ChildItems) { if (!firstDone) { if (Progress != null) { Progress( this, new OriginProgressEventArgs(State.BeginChildItems, originItem) ); } firstDone = true; } ProcessArchiveItem(archiveSubItem, originItem); } if (!firstDone) { if (Progress != null) { Progress( this, new OriginProgressEventArgs(State.EndChildItems, originItem) ); } } }
void ProcessOrigin(IOrigin origin) { IOriginItem originItem = origin.GetRootItem(); logger.DebugFormat("Processing Root Origin {0}", originItem.Name); ArchiveItem archiveItem = Archive.CreateRootItem(Path.GetFileName(originItem.Name), originItem.Type); ProcessOriginItem(archiveItem, originItem); }
void ProcessOriginItem(ArchiveItem archiveItem, IOriginItem originItem) { logger.DebugFormat("Processing Origin {0}", originItem.Name); if (Progress != null) { Progress(this, new OriginProgressEventArgs(State.BeginItem, originItem)); } ProcessOriginItemStreams(archiveItem, originItem); ProcessOriginChildItems(archiveItem, originItem); if (Progress != null) { Progress(this, new OriginProgressEventArgs(State.EndItem, originItem)); } }
void ProcessArchiveItem(ArchiveItem archiveItem, IOriginItem parentItem) { IOriginItem originItem = parentItem.CreateChildItem( archiveItem.Name, archiveItem.Type ); if (Progress != null) { Progress(this, new OriginProgressEventArgs(State.BeginItem, originItem)); } ProcessArchiveStreams(archiveItem, originItem); ProcessArchiveChildItems(archiveItem, originItem); if (Progress != null) { Progress(this, new OriginProgressEventArgs(State.EndItem, originItem)); } }
void ProcessOriginChildItems(ArchiveItem archiveItem, IOriginItem originItem) { bool firstDone = false; foreach (IOriginItem originSubItem in originItem.ChildItems) { if (!firstDone) { if (Progress != null) Progress ( this, new OriginProgressEventArgs (State.BeginChildItems, originItem) ); firstDone = true; } ArchiveItem archiveSubItem = archiveItem.CreateChildItem (originSubItem.Name, originSubItem.Type); ProcessOriginItem (archiveSubItem, originSubItem); } if (!firstDone) { if (Progress != null) Progress (this, new OriginProgressEventArgs (State.EndChildItems, originItem)); } }
bool ProcessOrigin(IOrigin origin, VerificationType verificationType) { bool same = true; IOriginItem originItem = origin.GetRootItem(); var item = rootItems.SingleOrDefault(p => p.Name == originItem.Name); if (item != null) { rootItems.Remove(item); same = ProcessOriginItem(item, originItem, verificationType); } else { logger.WarnFormat("Only present in origin: {0}", item.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) ); } } }
public OriginProgressEventArgs(State state, IOriginItem originItem) : this(state, originItem, 0, 0) { }
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) ); } }
void ProcessArchiveItem(ArchiveItem archiveItem, IOriginItem parentItem) { IOriginItem originItem = parentItem.CreateChildItem ( archiveItem.Name, archiveItem.Type ); if (Progress != null) Progress (this, new OriginProgressEventArgs (State.BeginItem, originItem)); ProcessArchiveStreams (archiveItem, originItem); ProcessArchiveChildItems (archiveItem, originItem); if (Progress != null) Progress (this, new OriginProgressEventArgs (State.EndItem, originItem)); }
void ProcessOriginItem(ArchiveItem archiveItem, IOriginItem originItem) { logger.DebugFormat ("Processing Origin {0}", originItem.Name); if (Progress != null) Progress (this, new OriginProgressEventArgs (State.BeginItem, originItem)); ProcessOriginItemStreams (archiveItem, originItem); ProcessOriginChildItems (archiveItem, originItem); if (Progress != null) Progress (this, new OriginProgressEventArgs (State.EndItem, 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); }