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();
}
}
}
}