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(); }
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++; }
private void AddLRUEntry(BufferEntry buffer) { if (LRU.Count >= Options.LRULimit) { //FLUSH } LRU.AddFirst(buffer); }
public void MoveToLast(BufferEntry entry) { if (entry == null) { throw new ArgumentNullException(nameof(entry)); } Remove(entry); AddLast(entry); }
public void AddLast(BufferEntry entry) { if (_first == null) { _first = entry; _version++; _count++; entry.Prev = entry; entry.Next = entry; } else { InsertBefore(_first, entry); } }
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; }
private void MoveLRUEntry(BufferEntry buffer) { LRU.MoveToFirst(buffer); }
public void AddFlushEntry(BufferEntry buffer) { Flush.AddFirst(buffer); }
public void Clear() { _first = null; _count = 0; _version++; }