private VolumeSnapshot(VolumeSource source, XmlNode parentNode) { mRevision = VolumeSnapshotRevision.Create(PWLib.XmlHelp.GetAttribute(parentNode, VolumeSnapshotXml.XmlRevisionElement, "")); if (mRevision == null) { throw new Exception("Could not read revision from snapshot xml '" + parentNode.Name + "'"); } mRoot = VolumeSnapshotDirectory.BuildFromXml(this, PWLib.XmlHelp.GetFirstChildWithName(parentNode, "directory")); mFileCount = mRoot.CountAllFiles(ref mTotalFileSize); }
private VolumeSnapshotDatabase(XmlNode parentNode) { XmlNode element = PWLib.XmlHelp.GetFirstChildWithName(parentNode, "snapshots"); foreach (XmlNode childNode in element.ChildNodes) { string lowerName = childNode.Name.ToLower(); if (lowerName == VolumeSnapshotXml.XmlSnapshotElement) { string revisionTicks = PWLib.XmlHelp.GetAttribute(childNode, VolumeSnapshotXml.XmlRevisionElement, ""); VolumeSnapshotRevision revision = VolumeSnapshotRevision.Create(revisionTicks); mSnapshotXmlCache.Add(revision, childNode.OuterXml); } } }
private VolumeSnapshotFile(VolumeSnapshot snapshot, XmlNode node) { mSnapshot = snapshot; mFileName = PWLib.XmlHelp.DirtyString(PWLib.XmlHelp.GetAttribute(node, VolumeSnapshotXml.XmlFilenameElement, "")); mRelativePath = PWLib.XmlHelp.DirtyString(PWLib.XmlHelp.GetAttribute(node, VolumeSnapshotXml.XmlRelativePathElement, "")); mRevision = VolumeSnapshotRevision.Create(PWLib.XmlHelp.GetAttribute(node, VolumeSnapshotXml.XmlRevisionElement, "")); ulong.TryParse(PWLib.XmlHelp.GetAttribute(node, VolumeSnapshotXml.XmlSizeElement, "0"), out mFileSize); long ticks; if (long.TryParse(PWLib.XmlHelp.GetAttribute(node, VolumeSnapshotXml.XmlLastModifiedElement, "0"), out ticks)) { mLastModified = new DateTime(ticks); } }
private VolumeSnapshotDirectory(VolumeSnapshot snapshot, XmlNode parentNode) { mSnapshot = snapshot; mName = PWLib.XmlHelp.DirtyString(PWLib.XmlHelp.GetAttribute(parentNode, VolumeSnapshotXml.XmlNameElement, "")); mRelativePath = PWLib.XmlHelp.DirtyString(PWLib.XmlHelp.GetAttribute(parentNode, VolumeSnapshotXml.XmlRelativePathElement, "")); mRevision = VolumeSnapshotRevision.Create(PWLib.XmlHelp.GetAttribute(parentNode, VolumeSnapshotXml.XmlRevisionElement, "")); long ticks; if (long.TryParse(PWLib.XmlHelp.GetAttribute(parentNode, VolumeSnapshotXml.XmlLastModifiedElement, "0"), out ticks)) { mLastModified = new DateTime(ticks); } foreach (XmlNode childNode in parentNode.ChildNodes) { string lowerName = childNode.Name.ToLower(); if (lowerName == VolumeSnapshotXml.XmlDirectoryElement) // Sub directories { try { VolumeSnapshotDirectory subDirEntry = new VolumeSnapshotDirectory(mSnapshot, childNode); mDirectories.Add(subDirEntry); } catch (System.Exception e) { FileSync.__LogError(this, "VolumeSnapshotDirectory.BuildFromXml failed in directory '" + mName + "' '" + mRelativePath + "'", e); } } else if (lowerName == VolumeSnapshotXml.XmlFileElement) // Files { try { VolumeSnapshotFile fileEntry = VolumeSnapshotFile.BuildFromXml(mSnapshot, childNode); mFiles.Add(fileEntry); } catch (System.Exception e) { FileSync.__LogError(this, "VolumeSnapshotDirectory.BuildFromXml failed in directory on a file '" + mName + "' '" + mRelativePath + "'", e); } } } }