private boolean directoryRemoveStable(DirectoryNode dn, Hash256 index) { onDirectoryModified(dn); return dn.indexes().remove(index); } private boolean directoryRemoveUnstable(DirectoryNode dn, Hash256 index) {
/** * This method puts the last element in the removed elements slot, and * pops off the back, thus preserving contiguity but losing ordering. * @param ledgerIndex the ledger entry index to remove */ public boolean removeUnstable(Hash256 ledgerIndex) { int i = indexOf(ledgerIndex); if (i == -1) { return false; } int last = size() - 1; Hash256 lastIndex = get(last); set(i, lastIndex); remove(last); return true; }
public void updateSkipLists(long currentIndex, Hash256 parentHash) { long prev = currentIndex - 1; if ((prev & 0xFF) == 0) { Hash256 skipIndex = Index.ledgerHashes(prev); LedgerHashes skip = createOrUpdateSkipList(skipIndex); Vector256 hashes = skip.hashes(); assert hashes.size() <= 256; hashes.add(parentHash); skip.put(UInt32.LastLedgerSequence, new UInt32(prev)); } Hash256 skipIndex = Index.ledgerHashes(); LedgerHashes skip = createOrUpdateSkipList(skipIndex); Vector256 hashes = skip.hashes(); if (hashes.size() > 256) throw new AssertionError(); if (hashes.size() == 256) { hashes.remove(0); } hashes.add(parentHash); skip.put(UInt32.LastLedgerSequence, new UInt32(prev)); }