private void Add(IBatchContainer batch, StreamSequenceToken sequenceToken) { if (batch == null) { throw new ArgumentNullException(nameof(batch)); } var cacheBucket = GetOrCreateBucket(); cacheBucket.UpdateNumItems(1); // Add message to linked list var item = new TimedQueueCacheItem { Batch = batch, SequenceToken = sequenceToken, CacheBucket = cacheBucket, }; item.Timestamp = GetTimestampForItem(batch); var newNode = new LinkedListNode <TimedQueueCacheItem>(item); // If it's the first item, then we also update if (cacheBucket.NumCurrentItems == 1) { Log(_logger, "TimedQueueCache for QueueId:{0}, Add: The oldest timespan in the cache is {1}", Id.ToString(), item.Timestamp); cacheBucket.OldestMemberTimestamp = item.Timestamp; cacheBucket.OldestMember = newNode; } // Setting the newest member cacheBucket.NewestMemberTimestamp = item.Timestamp; cacheBucket.NewestMember = newNode; _cachedMessages.AddFirst(newNode); _counterMessagesInCache.Increment(Id.ToString(), 1); }
private void Add(IBatchContainer batch, StreamSequenceToken sequenceToken) { if (batch == null) throw new ArgumentNullException(nameof(batch)); var cacheBucket = GetOrCreateBucket(); cacheBucket.UpdateNumItems(1); // Add message to linked list var item = new TimedQueueCacheItem { Batch = batch, SequenceToken = sequenceToken, CacheBucket = cacheBucket, }; item.Timestamp = GetTimestampForItem(batch); var newNode = new LinkedListNode<TimedQueueCacheItem>(item); // If it's the first item, then we also update if (cacheBucket.NumCurrentItems == 1) { Log(_logger, "TimedQueueCache for QueueId:{0}, Add: The oldest timespan in the cache is {1}", Id.ToString(), item.Timestamp); cacheBucket.OldestMemberTimestamp = item.Timestamp; cacheBucket.OldestMember = newNode; } // Setting the newest member cacheBucket.NewestMemberTimestamp = item.Timestamp; cacheBucket.NewestMember = newNode; _cachedMessages.AddFirst(newNode); _counterMessagesInCache.Increment(Id.ToString(), 1); }