Пример #1
0
        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);
        }
Пример #2
0
        public IReplacingVisitor CreateReplacingVisitor(IPageReference pageReference)
        {
            PagesErrors++;
            var pageId  = pageReference.PageId;
            var frameId = GetTheMostUselessFrame(pageReference).Id;

            return(new ReplacingVisitor(pageId, frameId));
        }
Пример #3
0
        public IReplacingVisitor CreateReplacingVisitor(IPageReference pageReference)
        {
            PagesErrors++;

            Guid pageId  = pageReference.PageId;
            Guid frameId = GetNextFrame().Id;

            return(new ReplacingVisitor(pageId, frameId));
        }
Пример #4
0
        public IReplacingVisitor CreateReplacingVisitor(IPageReference pageReference)
        {
            PagesErrors++;

            var pageId  = pageReference.PageId;
            var frameId = GetLeastRecentlyUsedFrame().Id;

            return(new ReplacingVisitor(pageId, frameId));
        }
Пример #5
0
        public IReplacingVisitor CreateReplacingVisitor(IPageReference pageReference)
        {
            PagesErrors++;

            var pageId  = pageReference.PageId;
            var frameId = GetRandomFrame();

            return(new ReplacingVisitor(pageId, frameId));
        }
Пример #6
0
        public IReplacingVisitor CreateReplacingVisitor(IPageReference pageReference)
        {
            PagesErrors++;
            _enumerator.MoveNext();

            var pageId  = pageReference.PageId;
            var frameId = _enumerator.Current;

            return(new ReplacingVisitor(pageId, frameId));
        }