/// <summary> /// Record from a queue. The only real use case for this record as of now. /// </summary> /// <param name="queue">The queue to create this record from.</param> public ContextSwitchRecord(IQueue queue) { Process next = queue.GetContextSwitch(); this.Ready = new List<ProcessRecord>(); this.IO = new List<ProcessRecord>(); this.Complete = new List<ProcessRecord>(); this.Running = null; if (next != null && queue.State != QueueState.COMPLETE) this.Running = new ProcessRecord(next.Name, next.Parent.Name, next.Time.Current.Duration); this.Time = queue.TotalTime - 1; //-1 because we're checking this AFTER it has incremented times. foreach (Process p in queue.CompleteProcs) { ProcessRecord add = new ProcessRecord() { Name = p.Name, Parent = p.Parent.Name, CurrentTime = p.Time.Current == null ? 0 : p.Time.Current.Duration }; this.Complete.Add(add); } foreach (Process p in queue.IOProcs) this.IO.Add(new ProcessRecord(p.Name, p.Parent.Name, p.Time.Current.Duration)); foreach (Process p in queue.ReadyProcs) { if(p != next) this.Ready.Add(new ProcessRecord(p.Name, p.Parent.Name, p.Time.Current.Duration)); } }