public Snapshot(LockMode mode, string collectionName, HeaderPage header, uint transactionID, TransactionPages transPages, LockService locker, WalIndexService walIndex, DiskReader reader, bool addIfNotExists) { _mode = mode; _collectionName = collectionName; _header = header; _transactionID = transactionID; _transPages = transPages; _locker = locker; _walIndex = walIndex; _reader = reader; // enter in lock mode according initial mode if (mode == LockMode.Read) { _locker.EnterRead(_collectionName); } else { _locker.EnterReserved(_collectionName); } // get lastest read version from wal-index _readVersion = _walIndex.CurrentReadVersion; var srv = new CollectionService(_header, this, _transPages); // read collection (create if new - load virtual too) srv.Get(_collectionName, addIfNotExists, ref _collectionPage); // clear local pages (will clear _collectionPage link reference) if (_collectionPage != null) { _localPages.Remove(_collectionPage.PageID); } }
public CollectionService(HeaderPage header, Snapshot snapshot, TransactionPages transPages) { _snapshot = snapshot; _header = header; _transPages = transPages; }