// // BwgBurn - CD-R/CD-RW/DVD-R/DVD-RW burning program for Windows XP // // Copyright (C) 2006 by Jack W. Griffin (butchg@comcast.net) // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License // for more details. // // You should have received a copy of the GNU General Public License along // with this program; if not, write to the // // Free Software Foundation, Inc., // 59 Temple Place, Suite 330, // Boston, MA 02111-1307 USA // using System; using System.Collections.Generic; using System.Collections; using System.Text; using System.Diagnostics; namespace Bwg.Scsi { /// /// A list of performance entries from the drive /// public class PerformanceList : Result, IEnumerable, IEnumerable { #region public types /// /// The type of the data (read or write) /// public enum DataType { /// /// This means read data /// ReadData, /// /// This means write data /// WriteData } ; /// /// /// public enum ExceptType : byte { /// /// /// Nominal = 0, /// /// /// Entire = 1, /// /// /// Exceptions = 2 } #endregion #region private data members private DataType m_type; private IList m_list; private bool m_except; #endregion /// /// The constructor for the class /// /// /// public PerformanceList(IntPtr buffer, int size) : base(buffer, size) { m_list = new List(); uint len = Get32(0); int index = 8; Debug.Assert(size >= 8); byte b = Get8(4); if ((b & 0x02) != 0) m_type = DataType.WriteData; else m_type = DataType.ReadData; if ((b & 0x01) != 0) m_except = true; else m_except = false; while (index < len && index + 16 <= len && index + 16 <= size) { Performance p = new Performance(buffer, index, size); m_list.Add(p); index += 16; } } /// /// Return an indexed entry tino the performance list /// /// /// public Performance this[int index] { get { return m_list[index]; } } #region properties /// /// The type of the data /// public DataType Type { get { return m_type; } } /// /// If true, this is exception data /// public bool IsExceptionData { get { return m_except; } } #endregion #region public members /// /// Return an enumerator for this list /// /// public IEnumerator GetEnumerator() { return m_list.GetEnumerator(); } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return m_list.GetEnumerator(); } #endregion } }