Пример #1
0
 private void LoadBufferPage(BufferEntry buffer)
 {
     buffer.Page = new Page(new byte[Constants.PageSize]);
     //buffer.Page = PageManager.ReadPage(buffer.Position);
     buffer.State = BufferState.Clean;
     buffer.Latch.ExitWriteScope();
 }
Пример #2
0
        private void Remove(BufferEntry entry)
        {
            if (entry.Prev == null &&
                entry.Next == null &&
                entry != _first)
            {
                return;
            }

            if (entry.Prev == entry)
            {
                _first = null;
            }
            else if (_first == entry)
            {
                entry.Next.Prev = entry.Prev;
                entry.Prev.Next = entry.Next;

                _first = entry.Next;
            }
            else
            {
                entry.Next.Prev = entry.Prev;
                entry.Prev.Next = entry.Next;
            }

            _count--;
            _version++;
        }
Пример #3
0
        private void AddLRUEntry(BufferEntry buffer)
        {
            if (LRU.Count >= Options.LRULimit)
            {
                //FLUSH
            }

            LRU.AddFirst(buffer);
        }
Пример #4
0
        public void MoveToLast(BufferEntry entry)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }

            Remove(entry);
            AddLast(entry);
        }
Пример #5
0
 public void AddLast(BufferEntry entry)
 {
     if (_first == null)
     {
         _first = entry;
         _version++;
         _count++;
         entry.Prev = entry;
         entry.Next = entry;
     }
     else
     {
         InsertBefore(_first, entry);
     }
 }
Пример #6
0
        private void InsertBefore(BufferEntry beforeEntry, BufferEntry entry)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }

            if (beforeEntry == null)
            {
                throw new ArgumentNullException(nameof(beforeEntry));
            }

            _count++;
            _version++;

            entry.Next            = beforeEntry;
            entry.Prev            = beforeEntry.Prev;
            beforeEntry.Prev.Next = entry;
            beforeEntry.Prev      = entry;
        }
Пример #7
0
 private void MoveLRUEntry(BufferEntry buffer)
 {
     LRU.MoveToFirst(buffer);
 }
Пример #8
0
 public void AddFlushEntry(BufferEntry buffer)
 {
     Flush.AddFirst(buffer);
 }
Пример #9
0
 public void Clear()
 {
     _first = null;
     _count = 0;
     _version++;
 }