public Transact Leave() { Transact onExit = _queue.Pop(); onExit.AddLog(new TransactLog(_time, EventTypeEnum.LeaveQueue)); return(onExit); }
public void Enter(Transact transact) { transact.AddLog(new TransactLog(_time, EventTypeEnum.EnterServer)); IsFree = false; _currentTransact = transact; NextReleaseTime = new ModelTime() { Time = _time.Time + (_currentTransact.Type == TransactTypeEnum.Atype ? _aTypeGenerator.Next() : _bTypeGenerator.Next()) }; }
public Transact Get() { Transact transact = null; if (NextAGenerationTime == _time) { NextAGenerationTime = new ModelTime() { Time = _time.Time + _aTypeGenerator.Next() }; transact = new Transact(++idCounter, TransactTypeEnum.Atype); } if (NextBGenerationTime == _time) { NextBGenerationTime = new ModelTime() { Time = _time.Time + _bTypeGenerator.Next() }; transact = new Transact(++idCounter, TransactTypeEnum.Btype); } transact?.AddLog(new TransactLog(_time, EventTypeEnum.Born)); return(transact); }
public void Enter(Transact transact) { transact.AddLog(new TransactLog(_time, EventTypeEnum.EnterQueue)); _queue.Push(transact); }
public void DrainTransact(Transact transact) { transact.AddLog(new TransactLog(_time, EventTypeEnum.Death)); DrainedTransacts.Add(transact); }