public OriginProgressEventArgs(State state, IOriginItem originItem, long done, long total)
 {
     State = state;
     OriginItem = originItem;
     Done = done;
     Total = total;
 }
Exemple #2
0
 public OriginProgressEventArgs(State state, IOriginItem originItem, long done, long total)
 {
     State      = state;
     OriginItem = originItem;
     Done       = done;
     Total      = total;
 }
Exemple #3
0
        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)
                        );
                }
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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));
            }
        }
Exemple #6
0
        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));
            }
        }
Exemple #7
0
 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));
     }
 }
Exemple #8
0
        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);
        }
Exemple #9
0
        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)
 {
 }
Exemple #11
0
 public OriginProgressEventArgs(State state, IOriginItem originItem)
     : this(state, originItem, 0, 0)
 {
 }
Exemple #12
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;
        }
Exemple #13
0
        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)
                    );
            }
        }
Exemple #14
0
        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));
        }
Exemple #15
0
        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));
        }
Exemple #16
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);
        }