/// <summary> /// Iterate through all the elements we're tracking and, if a value was /// recorded for it, write it out. /// </summary> /// <exception cref="System.IO.IOException"/> private void WriteLine() { IEnumerator <ImageVisitor.ImageElement> it = elementsToTrack.GetEnumerator(); while (it.HasNext()) { ImageVisitor.ImageElement e = it.Next(); string v = null; if (e == ImageVisitor.ImageElement.NumBytes) { v = fileSize.ToString(); } else { v = elements[e]; } if (v != null) { Write(v); } if (it.HasNext()) { Write(delimiter); } } }
/// <exception cref="System.IO.IOException"/> internal override void Visit(ImageVisitor.ImageElement element, string value) { if (inInode) { switch (element) { case ImageVisitor.ImageElement.InodePath: { current.path = (value.Equals(string.Empty) ? "/" : value); break; } case ImageVisitor.ImageElement.Replication: { current.replication = System.Convert.ToInt32(value); break; } case ImageVisitor.ImageElement.NumBytes: { current.fileSize += long.Parse(value); break; } default: { break; } } } }
// Print element, along with associated key/value pair, in brackets /// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element, ImageVisitor.ImageElement key, string value) { PrintIndents(); Write(element + " [" + key + " = " + value + "]\n"); dc.IncLevel(); }
/// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element) { elemQ.Push(element); if (element == ImageVisitor.ImageElement.Inode) { NewLine(); } }
/// <exception cref="System.IO.IOException"/> internal override void LeaveEnclosingElement() { ImageVisitor.ImageElement elem = elemQ.Pop(); if (elem == ImageVisitor.ImageElement.Inode) { PrintLine(); } }
/// <exception cref="System.IO.IOException"/> internal override void LeaveEnclosingElement() { if (tagQ.Count == 0) { throw new IOException("Tried to exit non-existent enclosing element " + "in FSImage file" ); } ImageVisitor.ImageElement element = tagQ.Pop(); Write("</" + element.ToString() + ">\n"); }
/// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element) { elemS.Push(element); if (element == ImageVisitor.ImageElement.Inode || element == ImageVisitor.ImageElement .InodeUnderConstruction) { current = new FileDistributionVisitor.FileContext(); inInode = true; } }
/// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element, ImageVisitor.ImageElement key, string value) { // Special case as numBlocks is an attribute of the blocks element if (key == ImageVisitor.ImageElement.NumBlocks && elements.Contains(ImageVisitor.ImageElement .NumBlocks)) { elements[key] = value; } elemQ.Push(element); }
/// <exception cref="System.IO.IOException"/> internal override void LeaveEnclosingElement() { ImageVisitor.ImageElement elem = elemQ.Pop(); // If we're done with an inode, write out our results and start over if (elem == ImageVisitor.ImageElement.Inode || elem == ImageVisitor.ImageElement. InodeUnderConstruction) { WriteLine(); Write("\n"); Reset(); } }
/// <exception cref="System.IO.IOException"/> internal override void Visit(ImageVisitor.ImageElement element, long value) { if ((element == ImageVisitor.ImageElement.DelegationTokenIdentifierExpiryTime) || (element == ImageVisitor.ImageElement.DelegationTokenIdentifierIssueDate) || (element == ImageVisitor.ImageElement.DelegationTokenIdentifierMaxDate)) { Visit(element, Sharpen.Extensions.CreateDate(value).ToString()); } else { Visit(element, System.Convert.ToString(value)); } }
/// <exception cref="System.IO.IOException"/> internal override void Visit(ImageVisitor.ImageElement element, string value) { if (element == ImageVisitor.ImageElement.InodePath) { string filename = Sharpen.Runtime.Substring(value, value.LastIndexOf("/") + 1); if (counts.Contains(filename)) { counts[filename] = counts[filename] + 1; } else { counts[filename] = 1; } } }
/// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element, ImageVisitor.ImageElement key, string value) { elemQ.Push(element); if (element == ImageVisitor.ImageElement.Inode) { NewLine(); } else { if (element == ImageVisitor.ImageElement.Blocks) { numBlocks = System.Convert.ToInt32(value); } } }
/// <exception cref="System.IO.IOException"/> internal override void Visit(ImageVisitor.ImageElement element, string value) { // Explicitly label the root path if (element == ImageVisitor.ImageElement.InodePath && value.Equals(string.Empty)) { value = "/"; } // Special case of file size, which is sum of the num bytes in each block if (element == ImageVisitor.ImageElement.NumBytes) { fileSize += long.Parse(value); } if (elements.Contains(element) && element != ImageVisitor.ImageElement.NumBytes) { elements[element] = value; } }
/// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element, ImageVisitor.ImageElement key, string value) { elemS.Push(element); if (element == ImageVisitor.ImageElement.Inode || element == ImageVisitor.ImageElement .InodeUnderConstruction) { inInode = true; } else { if (element == ImageVisitor.ImageElement.Blocks) { current.numBlocks = System.Convert.ToInt32(value); } } }
/// <exception cref="System.IO.IOException"/> internal override void LeaveEnclosingElement() { ImageVisitor.ImageElement elem = elemS.Pop(); if (elem != ImageVisitor.ImageElement.Inode && elem != ImageVisitor.ImageElement. InodeUnderConstruction) { return; } inInode = false; if (current.numBlocks < 0) { totalDirectories++; return; } totalFiles++; totalBlocks += current.numBlocks; totalSpace += current.fileSize * current.replication; if (maxFileSize < current.fileSize) { maxFileSize = current.fileSize; } int high; if (current.fileSize > maxSize) { high = distribution.Length - 1; } else { high = (int)Math.Ceil((double)current.fileSize / step); } distribution[high]++; if (totalFiles % 1000000 == 1) { System.Console.Out.WriteLine("Files processed: " + totalFiles + " Current: " + current .path); } }
// Convenience methods to automatically convert value types to strings /// <exception cref="System.IO.IOException"/> internal virtual void VisitEnclosingElement(ImageVisitor.ImageElement element, ImageVisitor.ImageElement key, int value) { VisitEnclosingElement(element, key, Sharpen.Extensions.ToString(value)); }
/// <exception cref="System.IO.IOException"/> internal virtual void VisitEnclosingElement(ImageVisitor.ImageElement element, ImageVisitor.ImageElement key, long value) { VisitEnclosingElement(element, key, System.Convert.ToString(value)); }
/// <summary> /// Begin visiting an element that encloses another element, such as /// the beginning of the list of blocks that comprise a file. /// </summary> /// <param name="element">Element being visited</param> /// <exception cref="System.IO.IOException"/> internal abstract void VisitEnclosingElement(ImageVisitor.ImageElement element);
/// <summary> /// Begin visiting an element that encloses another element, such as /// the beginning of the list of blocks that comprise a file. /// </summary> /// <remarks> /// Begin visiting an element that encloses another element, such as /// the beginning of the list of blocks that comprise a file. /// Also provide an additional key and value for the element, such as the /// number items within the element. /// </remarks> /// <param name="element">Element being visited</param> /// <param name="key">Key describing the element being visited</param> /// <param name="value">Value associated with element being visited</param> /// <exception cref="System.IO.IOException"/> internal abstract void VisitEnclosingElement(ImageVisitor.ImageElement element, ImageVisitor.ImageElement key, string value);
// Convenience methods to automatically convert numeric value types to strings /// <exception cref="System.IO.IOException"/> internal virtual void Visit(ImageVisitor.ImageElement element, int value) { Visit(element, Sharpen.Extensions.ToString(value)); }
/// <exception cref="System.IO.IOException"/> internal virtual void Visit(ImageVisitor.ImageElement element, long value) { Visit(element, System.Convert.ToString(value)); }
/// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element) { }
/// <summary>Visit non enclosing element of fsimage with specified value.</summary> /// <param name="element">FSImage element</param> /// <param name="value">Element's value</param> /// <exception cref="System.IO.IOException"/> internal abstract void Visit(ImageVisitor.ImageElement element, string value);
/// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element, ImageVisitor.ImageElement key, string value) { }
// Maintain state of location within the image tree and record // values needed to display the inode in ls-style format. /// <exception cref="System.IO.IOException"/> internal override void Visit(ImageVisitor.ImageElement element, string value) { if (inInode) { switch (element) { case ImageVisitor.ImageElement.InodePath: { if (value.Equals(string.Empty)) { path = "/"; } else { path = value; } break; } case ImageVisitor.ImageElement.PermissionString: { perms = value; break; } case ImageVisitor.ImageElement.Replication: { replication = System.Convert.ToInt32(value); break; } case ImageVisitor.ImageElement.UserName: { username = value; break; } case ImageVisitor.ImageElement.GroupName: { group = value; break; } case ImageVisitor.ImageElement.NumBytes: { filesize += long.Parse(value); break; } case ImageVisitor.ImageElement.ModificationTime: { modTime = value; break; } case ImageVisitor.ImageElement.Symlink: { linkTarget = value; break; } default: { // This is OK. We're not looking for all the values. break; } } } }
/// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element, ImageVisitor.ImageElement key, string value) { Write("<" + element.ToString() + " " + key + "=\"" + value + "\">\n"); tagQ.Push(element); }
/// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element) { Write("<" + element.ToString() + ">\n"); tagQ.Push(element); }
/// <exception cref="System.IO.IOException"/> internal override void Visit(ImageVisitor.ImageElement element, string value) { WriteTag(element.ToString(), value); }
/// <exception cref="System.IO.IOException"/> internal override void Visit(ImageVisitor.ImageElement element, string value) { PrintIndents(); Write(element + " = " + value + "\n"); }
/// <exception cref="System.IO.IOException"/> internal override void VisitEnclosingElement(ImageVisitor.ImageElement element) { PrintIndents(); Write(element + "\n"); dc.IncLevel(); }