private IFrame GetTheMostUselessFrame(IPageReference pageReference) { var dict = new Dictionary <IFrame, int>(); foreach (var frame in _physicalMemory) { dict[frame] = 0; } var futureReferences = _pageReferences.Select(item => item).ToList(); futureReferences.RemoveRange(0, futureReferences.IndexOf(pageReference)); var referencesCount = _pageReferences.Count; foreach (var frame in dict.Keys.ToList()) { if (frame.Page == null) { dict[frame] = referencesCount; break; } var index = futureReferences.FindIndex(r => r.PageId.Equals(frame.Page.Id)); if (index == -1) { dict[frame] = referencesCount; break; } dict[frame] = index; } var uselessFrame = dict.OrderByDescending(d => d.Value).First().Key; return(uselessFrame); }
public IReplacingVisitor CreateReplacingVisitor(IPageReference pageReference) { PagesErrors++; var pageId = pageReference.PageId; var frameId = GetTheMostUselessFrame(pageReference).Id; return(new ReplacingVisitor(pageId, frameId)); }
public IReplacingVisitor CreateReplacingVisitor(IPageReference pageReference) { PagesErrors++; Guid pageId = pageReference.PageId; Guid frameId = GetNextFrame().Id; return(new ReplacingVisitor(pageId, frameId)); }
public IReplacingVisitor CreateReplacingVisitor(IPageReference pageReference) { PagesErrors++; var pageId = pageReference.PageId; var frameId = GetLeastRecentlyUsedFrame().Id; return(new ReplacingVisitor(pageId, frameId)); }
public IReplacingVisitor CreateReplacingVisitor(IPageReference pageReference) { PagesErrors++; var pageId = pageReference.PageId; var frameId = GetRandomFrame(); return(new ReplacingVisitor(pageId, frameId)); }
public IReplacingVisitor CreateReplacingVisitor(IPageReference pageReference) { PagesErrors++; _enumerator.MoveNext(); var pageId = pageReference.PageId; var frameId = _enumerator.Current; return(new ReplacingVisitor(pageId, frameId)); }