123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using DiskAccessLibrary;
- using Utilities;
- namespace DiskAccessLibrary.LogicalDiskManager
- {
- public abstract class DynamicVolume : Volume
- {
- private Guid m_volumeGuid;
- private Guid m_diskGroupGuid;
- public ulong VolumeID;
- public string Name;
- public string DiskGroupName;
- private int? m_bytesPerSector;
- public DynamicVolume(Guid volumeGuid, Guid diskGroupGuid)
- {
- m_volumeGuid = volumeGuid;
- m_diskGroupGuid = diskGroupGuid;
- }
- public override bool Equals(object obj)
- {
- if (obj is DynamicVolume)
- {
- return ((DynamicVolume)obj).VolumeGuid == this.VolumeGuid;
- }
- return false;
- }
- public override int GetHashCode()
- {
- return this.VolumeGuid.GetHashCode();
- }
-
-
-
- public override int BytesPerSector
- {
- get
- {
- if (!m_bytesPerSector.HasValue)
- {
- m_bytesPerSector = GetBytesPerSector(this.Columns, DynamicColumn.DefaultBytesPerSector);
- }
- return m_bytesPerSector.Value;
- }
- }
- public Guid VolumeGuid
- {
- get
- {
- return m_volumeGuid;
- }
- }
- public Guid DiskGroupGuid
- {
- get
- {
- return m_diskGroupGuid;
- }
- }
- public override List<DiskExtent> Extents
- {
- get
- {
- List<DiskExtent> result = new List<DiskExtent>();
- foreach (DynamicDiskExtent extent in this.DynamicExtents)
- {
- result.Add(extent);
- }
- return result;
- }
- }
- public abstract List<DynamicColumn> Columns
- {
- get;
- }
- public List<DynamicDiskExtent> DynamicExtents
- {
- get
- {
- List<DynamicDiskExtent> result = new List<DynamicDiskExtent>();
- foreach (DynamicColumn column in Columns)
- {
- result.AddRange(column.Extents);
- }
- return result;
- }
- }
- public virtual bool IsHealthy
- {
- get
- {
- foreach (DynamicColumn column in this.Columns)
- {
- if (!column.IsOperational)
- {
- return false;
- }
- }
- return true;
- }
- }
- public virtual bool IsOperational
- {
- get
- {
- return IsHealthy;
- }
- }
- public static int GetBytesPerSector(List<DynamicColumn> columns, int defaultValue)
- {
- int? bytesPerSector = GetBytesPerSector(columns);
- return bytesPerSector.HasValue ? bytesPerSector.Value : defaultValue;
- }
-
-
-
- public static int? GetBytesPerSector(List<DynamicColumn> columns)
- {
- foreach (DynamicColumn column in columns)
- {
- int? bytesPerSector = DynamicColumn.GetBytesPerSector(column.Extents);
- if (bytesPerSector.HasValue)
- {
- return bytesPerSector.Value;
- }
- }
- return null;
- }
- }
- }
|