public CollectionService(CacheService cache, PageService pager, IndexService indexer, DataService data) { _cache = cache; _pager = pager; _indexer = indexer; _data = data; }
internal TransactionService(IDiskService disk, PageService pager, CacheService cache) { _disk = disk; _pager = pager; _cache = cache; _cache.MarkAsDirtyAction = (page) => _disk.WriteJournal(page.PageID, page.DiskData); _cache.DirtyRecicleAction = () => this.Save(); }
/// <summary> /// Drop a collection - remove all data pages + indexes pages /// </summary> public void Drop(CollectionPage col, CacheService cache) { // add all pages to delete var pages = new HashSet<uint>(); // search for all data page and index page foreach (var index in col.GetIndexes(true)) { // get all nodes from index var nodes = _indexer.FindAll(index, Query.Ascending); foreach (var node in nodes) { // if is PK index, add dataPages if(index.Slot == 0) { pages.Add(node.DataBlock.PageID); // read datablock to check if there is any extended page var block = _data.Read(node.DataBlock, false); if (block.ExtendPageID != uint.MaxValue) { _pager.DeletePage(block.ExtendPageID, true); cache.CheckPoint(); } } // add index page to delete list page pages.Add(node.Position.PageID); } // remove head+tail nodes in all indexes pages.Add(index.HeadNode.PageID); pages.Add(index.TailNode.PageID); } // and now, lets delete all this pages foreach (var pageID in pages) { _pager.DeletePage(pageID); cache.CheckPoint(); } // get header page to remove from collection list links var header = _pager.GetPage<HeaderPage>(0, true); header.CollectionPages.Remove(col.CollectionName); _pager.DeletePage(col.PageID); }
internal TransactionService(DiskService disk, CacheService cache, JournalService journal) { _disk = disk; _cache = cache; _journal = journal; }
public DataService(DiskService disk, CacheService cache, PageService pager) { _disk = disk; _cache = cache; _pager = pager; }
public JournalService(ConnectionString connectionString, CacheService cache) { _connectionString = connectionString; _cache = cache; }
public IndexService(CacheService cache, PageService pager) { _cache = cache; _pager = pager; }
internal TransactionService(IDiskService disk, AesEncryption crypto, PageService pager, LockService locker, CacheService cache, int cacheSize, Logger log) { _disk = disk; _crypto = crypto; _cache = cache; _locker = locker; _pager = pager; _cacheSize = cacheSize; _log = log; }