private void VisitLabels(long nodeId, System.Action <long> visitor) { // This transaction state visitor doesn't have access to higher level cursors that combine store- and tx-state, // but however has access to the two individually, and so does this combining here directly. if (_txState.nodeIsDeletedInThisTx(nodeId)) { return; } if (_txState.nodeIsAddedInThisTx(nodeId)) { _txState.getNodeState(nodeId).labelDiffSets().Added.forEach(visitor.accept); } else { _nodeCursor.single(nodeId); if (_nodeCursor.next()) { long[] labels = _nodeCursor.labels(); LongDiffSets labelDiff = _txState.getNodeState(nodeId).labelDiffSets(); labelDiff.Added.forEach(visitor.accept); foreach (long label in labels) { if (!labelDiff.IsRemoved(label)) { visitor(label); } } } } }
public override void Scan(IndexProgressor progressor, bool providesLabels, int label) { base.Initialize(progressor); if (_read.hasTxStateWithChanges()) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.neo4j.storageengine.api.txstate.LongDiffSets changes = read.txState().nodesWithLabelChanged(label); LongDiffSets changes = _read.txState().nodesWithLabelChanged(label); _added = changes.Augment(ImmutableEmptyLongIterator.INSTANCE); _removed = mergeToSet(_read.txState().addedAndRemovedNodes().Removed, changes.Removed); } }
public override bool HasLabel(int label) { if (HasChanges()) { TransactionState txState = _read.txState(); LongDiffSets diffSets = txState.NodeStateLabelDiffSets(_storeCursor.entityReference()); if (diffSets.Added.contains(label)) { return(true); } if (diffSets.Removed.contains(label)) { return(false); } } //Get labels from store and put in intSet, unfortunately we get longs back return(_storeCursor.hasLabel(label)); }