private void ReadyToDepart(ILoad load) { Log("Ready to Depart", load); if (DebugMode) { Debug.WriteLine("{0}:\t{1}\tReadyToDepart\t{2}", ClockTime, this, load); } HSet_Serving.Remove(load); HSet_PendingToDepart.Add(load); HC_Serving.ObserveChange(-1, ClockTime); HC_PendingToDepart.ObserveChange(1, ClockTime); OnReadyToDepart.Invoke(load); }
private void AtmptStart() { if (List_PendingToStart.Count > 0 && Vacancy > 0) { var load = List_PendingToStart.First(); Log("Start", load); if (DebugMode) { Debug.WriteLine("{0}:\t{1}\tStart\t{2}", ClockTime, this, load); } List_PendingToStart.RemoveAt(0); HSet_Serving.Add(load); HC_Serving.ObserveChange(1, ClockTime); OnStarted.Invoke(load); Schedule(() => ReadyToDepart(load), Assets.ServiceTime(DefaultRS, load)); } }