public IBTreeNode RemappingIterate(long transactionId, BTreeRemappingIterateAction action) { var result = this; var children = _children; for (var i = 0; i < children.Length; i++) { var child = children[i]; var newChild = child.RemappingIterate(transactionId, action); if (newChild == child) { continue; } if (result.TransactionId != transactionId) { var newKeys = new byte[_keys.Length][]; Array.Copy(_keys, newKeys, newKeys.Length); var newChildren = new IBTreeNode[_children.Length]; Array.Copy(_children, newChildren, newChildren.Length); var newPairCounts = new long[_pairCounts.Length]; Array.Copy(_pairCounts, newPairCounts, newPairCounts.Length); result = new BTreeBranch(transactionId, newKeys, newChildren, newPairCounts); children = newChildren; } children[i] = newChild; } return(result); }
public void RemappingIterate(BTreeRemappingIterateAction action) { if (_rootNode == null) { return; } _rootNode = _rootNode.RemappingIterate(TransactionId, action); }
public IBTreeNode RemappingIterate(long transactionId, BTreeRemappingIterateAction action) { var result = this; var keyvalues = _keyvalues; for (var i = 0; i < keyvalues.Length; i++) { uint newFileId; uint newOffset; if (action(keyvalues[i].ValueFileId, keyvalues[i].ValueOfs, out newFileId, out newOffset)) { if (result.TransactionId != transactionId) { var newKeyValues = new Member[keyvalues.Length]; Array.Copy(keyvalues, newKeyValues, newKeyValues.Length); result = new BTreeLeafComp(transactionId, _keyBytes, newKeyValues); keyvalues = newKeyValues; } keyvalues[i].ValueFileId = newFileId; keyvalues[i].ValueOfs = newOffset; } } return(result); }
public IBTreeNode RemappingIterate(long transactionId, BTreeRemappingIterateAction action) { var result = this; var keyvalues = _keyvalues; for (var i = 0; i < keyvalues.Length; i++) { uint newFileId; uint newOffset; if (action(keyvalues[i].ValueFileId, keyvalues[i].ValueOfs, out newFileId, out newOffset)) { if (result.TransactionId != transactionId) { var newKeyValues = new Member[keyvalues.Length]; Array.Copy(keyvalues, newKeyValues, newKeyValues.Length); result = new BTreeLeafComp(transactionId, _keyBytes, newKeyValues); keyvalues = newKeyValues; } keyvalues[i].ValueFileId = newFileId; keyvalues[i].ValueOfs = newOffset; } } return result; }
public IBTreeNode RemappingIterate(long transactionId, BTreeRemappingIterateAction action) { throw new ArgumentException(); }
public void RemappingIterate(BTreeRemappingIterateAction action) { if (_rootNode == null) return; _rootNode = _rootNode.RemappingIterate(TransactionId, action); }
public IBTreeNode RemappingIterate(long transactionId, BTreeRemappingIterateAction action) { var result = this; var children = _children; for (var i = 0; i < children.Length; i++) { var child = children[i]; var newChild = child.RemappingIterate(transactionId, action); if (newChild == child) continue; if (result.TransactionId != transactionId) { var newKeys = new byte[_keys.Length][]; Array.Copy(_keys, newKeys, newKeys.Length); var newChildren = new IBTreeNode[_children.Length]; Array.Copy(_children, newChildren, newChildren.Length); var newPairCounts = new long[_pairCounts.Length]; Array.Copy(_pairCounts, newPairCounts, newPairCounts.Length); result = new BTreeBranch(transactionId, newKeys, newChildren, newPairCounts); children = newChildren; } children[i] = newChild; } return result; }