Exemplo n.º 1
0
 /// <summary>
 /// Вызвать ближайшее событие модели
 /// </summary>
 /// <param name="model_event">вызванное событие модели</param>
 /// <returns>Если обработчик EventCaused задаст в e.StopModel значение false, функция возвратит false. true, если событие существует. В случае, если ни одно событие не запланировано, кидается исключение</returns>
 /// Пример использования:
 /// @code
 /// SmplModel model = new SmplModel();
 /// model.CreateDevice("device1");
 /// model.Devices["device1"].Reserve();
 /// model.Schedule(0,30);
 /// SmplEvent e;
 /// bool res = model.Cause(e);
 /// @endcode
 public bool Cause(out SmplEvent model_event)
 {
     if (futureEvents.Count > 0)
         {
             model_event = futureEvents[0];
             futureEvents.RemoveAt(0);
             Time = model_event.TimeCaused;
             IsStopped = OnEventCaused(new EventCausedEventArgs(model_event));
             return !IsStopped;
         }
         else
             throw new Exception("Not possible events!");
 }
Exemplo n.º 2
0
 /// <summary>
 /// Запланировать событие
 /// </summary>
 /// <param name="event_id">идентификатор типа события</param>
 /// <param name="wait_time">время, через которе событие вызовется</param>
 /// <param name="param">параметр, передаваемый событию</param>
 /// Пример использования:
 /// @code
 /// SmplModel model = new SmplModel();
 /// model.CreateDevice("device1");
 /// model.Devices["device1"].Reserve();
 /// model.Schedule(0,30);
 /// @endcode
 public void Schedule(int event_id, int wait_time, object param = null)
 {
     var e = new SmplEvent(event_id, Time, wait_time, param);
         for (int i = futureEvents.Count - 1; i >= 0; i--)
         {
             if (futureEvents[i].TimeCaused <= e.TimeCaused)
             {
                 futureEvents.Insert(i + 1, e);
                 return;
             }
         }
         // Else make it first
         futureEvents.Insert(0, e);
 }
Exemplo n.º 3
0
 // Конструктор:
 //  event_id - идентификатор события модели
 //  param    - параметр события
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="model_event">Событие</param>
 /// @code
 /// 
 /// @endcode
 public EventCausedEventArgs(SmplEvent model_event)
 {
     Event = model_event;
         StopModel = false;
 }