Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public void DeliveryAck(ISimEventHandle eventHandle)
 {
     // default no-op
 }
Esempio n. 3
0
 protected void RevokeSend(ISimEventHandle eventHandle)
 {
     Scheduler.Instance().Deregister(eventHandle);
 }
Esempio n. 4
0
 public void Deregister(ISimEventHandle eventHandle)
 {
     Instance().GetEventsFrom(eventHandle.Sender).Remove(eventHandle);
     Instance().GetEventsTo(eventHandle.Target).Remove(eventHandle);
     Instance()._ud2ehandle.Remove(eventHandle.UDT);
 }