Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
 public void Free(Builder builder)
 {
     _builderPool.Free(builder);
 }
Exemplo n.º 4
0
 public void Free(NodeType node)
 {
     _nodePool.Free(node);
 }