コード例 #1
0
 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);
     }
 }
コード例 #2
0
ファイル: MemoryLogQueue.cs プロジェクト: greggaba/GCDotNet
 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;
         }
     }
 }