public PrunedResult Prune(TimeSpan notUsedSince) { var targetTime = CurrentTime - notUsedSince; var prunedSenderIds = SenderLru.Where(x => x.Value <= targetTime).Select(x => x.Key).ToList(); return(new PrunedResult( new DeDuplicatingReceiverModelState(SenderLru.RemoveRange(prunedSenderIds), SenderIds.RemoveRange(prunedSenderIds), CurrentTime), prunedSenderIds)); }
public override string ToString() { return ($"DeDuplicatingReceiverModel(CurrentTime={CurrentTime}, SenderLru=[{string.Join(",", SenderLru.Select(x => x.Key + ":" + x.Value))}]," + $"SenderRecvCounts=[{string.Join(",", SenderIds.Select(x => x.Key + "->" + x.Value.Count))}]"); }
private void UpdateLru(string senderId) { SenderLru = SenderLru.SetItem(senderId, CurrentTime); }