Beispiel #1
0
            /// <summary>save all the snapshot diff to fsimage</summary>
            /// <exception cref="System.IO.IOException"/>
            public void SerializeSnapshotDiffSection(OutputStream @out)
            {
                INodeMap inodesMap             = fsn.GetFSDirectory().GetINodeMap();
                IList <INodeReference> refList = parent.GetSaverContext().GetRefList();
                int i = 0;
                IEnumerator <INodeWithAdditionalFields> iter = inodesMap.GetMapIterator();

                while (iter.HasNext())
                {
                    INodeWithAdditionalFields inode = iter.Next();
                    if (inode.IsFile())
                    {
                        SerializeFileDiffList(inode.AsFile(), @out);
                    }
                    else
                    {
                        if (inode.IsDirectory())
                        {
                            SerializeDirDiffList(inode.AsDirectory(), refList, @out);
                        }
                    }
                    ++i;
                    if (i % FSImageFormatProtobuf.Saver.CheckCancelInterval == 0)
                    {
                        context.CheckCancelled();
                    }
                }
                parent.CommitSection(headers, FSImageFormatProtobuf.SectionName.SnapshotDiff);
            }