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 snapshot = db.GetSnapshot()) { var readOptions = new ReadOptions { Snapshot = snapshot }; using (var iterator = db.NewIterator(readOptions)) { foreach (var keyPair in blockTxIndices) { var blockHash = keyPair.Key; var txIndices = keyPair.Value; var pruningCursor = new LevelDbMerkleTreePruningCursor(blockHash, iterator); // prune the transactions foreach (var index in txIndices) { var cachedCursor = new CachedMerkleTreePruningCursor<BlockTxNode>(pruningCursor); MerkleTree.PruneNode(cachedCursor, index); } var writeBatch = pruningCursor.CreateWriteBatch(); try { db.Write(new WriteOptions(), writeBatch); } finally { writeBatch.Dispose(); } } } } }
public void PruneElements(IEnumerable <KeyValuePair <UInt256, IEnumerable <int> > > blockTxIndices) { using (var snapshot = db.GetSnapshot()) { var readOptions = new ReadOptions { Snapshot = snapshot }; using (var iterator = db.NewIterator(readOptions)) { foreach (var keyPair in blockTxIndices) { var blockHash = keyPair.Key; var txIndices = keyPair.Value; var pruningCursor = new LevelDbMerkleTreePruningCursor(blockHash, iterator); // prune the transactions foreach (var index in txIndices) { var cachedCursor = new CachedMerkleTreePruningCursor <BlockTxNode>(pruningCursor); MerkleTree.PruneNode(cachedCursor, index); } var writeBatch = pruningCursor.CreateWriteBatch(); try { db.Write(new WriteOptions(), writeBatch); } finally { writeBatch.Dispose(); } } } } }
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) { foreach (var keyPair in blockTxIndices) { var blockHash = keyPair.Key; var txIndices = keyPair.Value; using (var txn = this.jetInstance.BeginTransaction()) using (var cursor = txn.CreateCursor(blocksTableId)) { var pruningCursor = new MerkleTreePruningCursor(blockHash, txn, blocksTableId, cursor); var cachedCursor = new CachedMerkleTreePruningCursor(pruningCursor); // prune the transactions foreach (var index in txIndices) MerkleTree.PruneNode(cachedCursor, index); cursor.Dispose(); txn.Commit(); } } }