public DateTimeRange Enqueue(IEnumerable <LogEntryExtra> logEntries) { lock (_lockObj) { DateTimeRange lostRange = null; foreach (var entry in logEntries) { if ((_maxMemoryCount > 0 && _q.Count >= _maxMemoryCount) || (_maxMemorySize > 0 && _currentMemorySize > _maxMemorySize)) { var lostEntry = _q.Dequeue(); _currentMemorySize -= lostEntry.Size; if (lostRange == null) { lostRange = new DateTimeRange(lostEntry.LogEntryExtra.Entry.Timestamp.ToDateTime(), lostEntry.LogEntryExtra.Entry.Timestamp.ToDateTime()); } else { lostRange = lostRange.WithTo(lostEntry.LogEntryExtra.Entry.Timestamp.ToDateTime()); } } var sizedEntry = new LogEntryExtraSize(entry, _maxMemorySize > 0 ? entry.Entry.CalculateSize() : 0); _q.Enqueue(sizedEntry); _currentMemorySize += sizedEntry.Size; } return(lostRange); } }
public void Enqueue(IEnumerable <LogEntryExtra> logEntries) { lock (_lock) { foreach (var entry in logEntries) { if ((_maxMemoryCount > 0 && _q.Count >= _maxMemoryCount) || (_maxMemorySize > 0 && _currentMemorySize > _maxMemorySize)) { var lostEntry = _q.Dequeue(); _currentMemorySize -= lostEntry.Size; var lost = new DateTimeRange(lostEntry.LogEntryExtra.Entry.Timestamp.ToDateTime(), lostEntry.LogEntryExtra.Entry.Timestamp.ToDateTime()); _lost = lost.Union(_lost); } var sizedEntry = new LogEntryExtraSize(entry, _maxMemorySize > 0 ? entry.Entry.CalculateSize() : 0); _q.Enqueue(sizedEntry); _currentMemorySize += sizedEntry.Size; } } }