public void Run() { SingletonLogger.Instance().DebugLog(typeof(Scheduler), "Scheduler: At start of Run() _ud2ehandle.Size(): " + _ud2ehandle.Count); _done = false; do { if (_ud2ehandle.Count == 0) { _done = true; } else { KeyValuePair <IUniqueDouble, ISimEventHandle> kvp = _ud2ehandle.FindMin(); IUniqueDouble udt = kvp.Key; ISimEventHandle eventHandle = kvp.Value; _timeNow = udt.Value; eventHandle.Sim_Event.Entering(eventHandle.Target); eventHandle.Target.Recv(eventHandle.Sender, eventHandle.Sim_Event); eventHandle.Sender.DeliveryAck(eventHandle); Deregister(eventHandle); } }while (!_done); KillAll(); Reset(); SingletonLogger.Instance().DebugLog(typeof(Scheduler), "Scheduler: At end of Run() _ud2ehandle.Size(): " + _ud2ehandle.Count); }
public void DeliveryAck(ISimEventHandle eventHandle) { // default no-op }
protected void RevokeSend(ISimEventHandle eventHandle) { Scheduler.Instance().Deregister(eventHandle); }
public void Deregister(ISimEventHandle eventHandle) { Instance().GetEventsFrom(eventHandle.Sender).Remove(eventHandle); Instance().GetEventsTo(eventHandle.Target).Remove(eventHandle); Instance()._ud2ehandle.Remove(eventHandle.UDT); }