示例#1
0
        public void PruneElements(UInt256 blockHash, IEnumerable <int> txIndices)
        {
            int blockId;

            if (!this.TryGetBlockId(blockHash, out blockId))
            {
                throw new MissingDataException(blockHash);
            }

            using (var handle = this.cursorCache.TakeItem())
            {
                var cursor = handle.Item;

                using (var jetTx = cursor.jetSession.BeginTransaction())
                {
                    var pruningCursor = new MerkleTreePruningCursor(blockId, cursor);
                    //var cachedCursor = new CachedMerkleTreePruningCursor(pruningCursor);

                    // prune the transactions
                    foreach (var index in txIndices)
                    {
                        MerkleTree.PruneNode(pruningCursor, index);
                    }

                    jetTx.CommitLazy();
                }
            }
        }
示例#2
0
        public void PruneElements(IEnumerable <KeyValuePair <UInt256, IEnumerable <int> > > blockTxIndices)
        {
            using (var handle = this.cursorCache.TakeItem())
            {
                var cursor = handle.Item;

                foreach (var keyPair in blockTxIndices)
                {
                    var blockHash = keyPair.Key;
                    var txIndices = keyPair.Value;

                    using (var jetTx = cursor.jetSession.BeginTransaction())
                    {
                        int blockIndex;
                        if (!TryGetBlockIndex(cursor, blockHash, out blockIndex))
                        {
                            continue;
                        }

                        var pruningCursor = new MerkleTreePruningCursor(blockIndex, cursor);

                        // prune the transactions
                        foreach (var index in txIndices)
                        {
                            var cachedCursor = new CachedMerkleTreePruningCursor <BlockTxNode>(pruningCursor);
                            MerkleTree.PruneNode(cachedCursor, index);
                        }

                        jetTx.CommitLazy();
                    }
                }
            }
        }
        public void PruneElements(IEnumerable<KeyValuePair<UInt256, IEnumerable<int>>> blockTxIndices)
        {
            using (var handle = this.cursorCache.TakeItem())
            {
                var cursor = handle.Item;

                foreach (var keyPair in blockTxIndices)
                {
                    var blockHash = keyPair.Key;
                    var txIndices = keyPair.Value;

                    using (var jetTx = cursor.jetSession.BeginTransaction())
                    {
                        int blockIndex;
                        if (!TryGetBlockIndex(cursor, blockHash, out blockIndex))
                            continue;

                        var pruningCursor = new MerkleTreePruningCursor(blockIndex, cursor);

                        // prune the transactions
                        foreach (var index in txIndices)
                        {
                            var cachedCursor = new CachedMerkleTreePruningCursor<BlockTxNode>(pruningCursor);
                            MerkleTree.PruneNode(cachedCursor, index);
                        }

                        jetTx.CommitLazy();
                    }
                }
            }
        }