public void Push(SchedulerEvent @event) { int id = Interlocked.Increment(ref _previousId); _events.Enqueue(new SchedulerEventData(id, @event, DateTime.UtcNow)); SchedulerEventData temp; while (_events.Count > _maxCapacity && _events.TryDequeue(out temp)) { } long now = DateTime.UtcNow.UnixTicks(); while (!_events.IsEmpty && _events.TryPeek(out temp) && now - temp.Date > _hubSpanMilliseconds && _events.TryDequeue(out temp)) { } }
public SchedulerEventData(int id, SchedulerEvent data, DateTime date) { _id = id; _data = data; _date = date; }