Esempio n. 1
0
        public void SetNewRoot(IRootNode artRoot)
        {
            var newRoot = (RootNode12)artRoot;

            if (newRoot._root != _rootNode._root)
            {
                throw new ArgumentException("SetNewRoot allows only upgrades to writable identical root");
            }
            _rootNode = (RootNode12)artRoot;
        }
Esempio n. 2
0
        public IRootNode CreateWritableTransaction()
        {
            if (_writable)
            {
                throw new InvalidOperationException("Only readonly root node could be CreateWritableTransaction");
            }
            var node = new RootNode12(_impl);

            node._writable     = true;
            node._root         = _root;
            node.CommitUlong   = CommitUlong;
            node.TransactionId = TransactionId + 1;
            node.TrLogFileId   = TrLogFileId;
            node.TrLogOffset   = TrLogOffset;
            node._ulongs       = _ulongs == null ? null : (ulong[])_ulongs.Clone();
            NodeUtils12.Reference(_root);
            return(node);
        }
Esempio n. 3
0
        public IRootNode Snapshot()
        {
            var snapshot = new RootNode12(_impl);

            snapshot._writable     = false;
            snapshot._root         = _root;
            snapshot.CommitUlong   = CommitUlong;
            snapshot.TransactionId = TransactionId;
            snapshot.TrLogFileId   = TrLogFileId;
            snapshot.TrLogOffset   = TrLogOffset;
            snapshot._ulongs       = _ulongs == null ? null : (ulong[])_ulongs.Clone();
            if (_writable)
            {
                TransactionId++;
            }
            NodeUtils12.Reference(_root);
            return(snapshot);
        }
Esempio n. 4
0
 Cursor12(Cursor12 from)
 {
     _rootNode = from._rootNode;
     _stack    = new StructList <CursorItem>(from._stack);
 }
Esempio n. 5
0
 public Cursor12(RootNode12 rootNode)
 {
     _rootNode = rootNode;
     _stack    = new StructList <CursorItem>();
 }