Example #1
0
 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();
 }
Example #3
0
        /// <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);
        }
Example #4
0
 internal TransactionService(DiskService disk, CacheService cache, JournalService journal)
 {
     _disk = disk;
     _cache = cache;
     _journal = journal;
 }
Example #5
0
 public DataService(DiskService disk, CacheService cache, PageService pager)
 {
     _disk = disk;
     _cache = cache;
     _pager = pager;
 }
Example #6
0
 public JournalService(ConnectionString connectionString, CacheService cache)
 {
     _connectionString = connectionString;
     _cache = cache;
 }
Example #7
0
 public IndexService(CacheService cache, PageService pager)
 {
     _cache = cache;
     _pager = pager;
 }
Example #8
0
 public JournalService(ConnectionString connectionString, CacheService cache)
 {
     _connectionString = connectionString;
     _cache            = cache;
 }
 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;
 }
Example #10
0
 internal TransactionService(DiskService disk, CacheService cache, JournalService journal)
 {
     _disk    = disk;
     _cache   = cache;
     _journal = journal;
 }