public void Update(long time) { if (_reservations.Count <= 0) { return; } var pair = _reservations.PeekFirst(); while (pair.Key <= time) { _reservations.Pop(); if (!pair.Value.IsCanceled) { pair.Value.IsCalled = true; if (pair.Value.Handler != null) { pair.Value.Handler.Reservation = null; } pair.Value.OnTime?.Invoke(pair.Key, pair.Value.Payload); } _reservationPool.Free(pair.Value); if (_reservations.Count <= 0) { break; } pair = _reservations.PeekFirst(); } }
public void Update(long clock) { while (_willremove.Count != 0) { var willRemove = _willremove.Dequeue(); _updates.Remove(willRemove.Index); _reservationPool.Free(willRemove); } while (_willadd.Count != 0) { Reservation willAdd = _willadd.Dequeue(); _updates.Add(willAdd.Index, willAdd); } foreach (var reservation in _updates.Values) { reservation.OnTime.Invoke(clock); } }
public void Free(Builder builder) { _builderPool.Free(builder); }
public void Free(NodeType node) { _nodePool.Free(node); }