Exemple #1
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);
        }
Exemple #2
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);
        }
Exemple #3
0
        public IRootNode CreateWritableTransaction()
        {
            if (Writable)
            {
                throw new InvalidOperationException("Only readonly root node could be CreateWritableTransaction");
            }
            var node = new RootNode12(Impl)
            {
                Writable      = true,
                Root          = Root,
                CommitUlong   = CommitUlong,
                TransactionId = TransactionId + 1,
                TrLogFileId   = TrLogFileId,
                TrLogOffset   = TrLogOffset,
                _ulongs       = (ulong[])_ulongs?.Clone()
            };

            NodeUtils12.Reference(Root);
            return(node);
        }
Exemple #4
0
        public IRootNode Snapshot()
        {
            var snapshot = new RootNode12(Impl)
            {
                Writable      = false,
                Root          = Root,
                CommitUlong   = CommitUlong,
                TransactionId = TransactionId,
                TrLogFileId   = TrLogFileId,
                TrLogOffset   = TrLogOffset,
                _ulongs       = (ulong[])_ulongs?.Clone()
            };

            if (Writable)
            {
                TransactionId++;
            }
            NodeUtils12.Reference(Root);
            return(snapshot);
        }