示例#1
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)
                        );
                }
            }
        }
示例#2
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)
                    );
            }
        }