@Override public LabelScanKey newKey() { return new LabelScanKey(); }
@Override public boolean isEmpty() throws IOException { try ( RawCursor<Hit<LabelScanKey,LabelScanValue>,IOException> cursor = index.seek( new LabelScanKey( 0, 0 ), new LabelScanKey( Integer.MAX_VALUE, Long.MAX_VALUE ) ) ) { return !cursor.next(); } }
private RawCursor<Hit<LabelScanKey,LabelScanValue>,IOException> seekerForLabel( long startId, int labelId ) throws IOException { LabelScanKey from = new LabelScanKey( labelId, rangeOf( startId ) ); LabelScanKey to = new LabelScanKey( labelId, Long.MAX_VALUE ); return index.seek( from, to ); }
private static LabelScanKey clone( LabelScanKey key ) { return new LabelScanKey( key.labelId, key.idRange ); }
new LabelScanKey().set( labelId, 0 ), new LabelScanKey().set( labelId, Long.MAX_VALUE ) ); new LabelScanKey().set( Integer.MAX_VALUE, Long.MAX_VALUE ), new LabelScanKey().set( 0, -1 ) ) )
private static Hit<LabelScanKey,LabelScanValue> hit( long baseNodeId, long bits ) { LabelScanKey key = new LabelScanKey( LABEL_ID, baseNodeId ); LabelScanValue value = new LabelScanValue(); value.bits = bits; return new MutableHit<>( key, value ); }
private static Labels labels( int labelId, long... nodeIds ) { List<Pair<LabelScanKey,LabelScanValue>> entries = new ArrayList<>(); long currentRange = 0; LabelScanValue value = new LabelScanValue(); for ( long nodeId : nodeIds ) { long range = nodeId / RANGE_SIZE; if ( range != currentRange ) { if ( value.bits != 0 ) { entries.add( Pair.of( new LabelScanKey().set( labelId, currentRange ), value ) ); value = new LabelScanValue(); } } value.set( toIntExact( nodeId % RANGE_SIZE ) ); currentRange = range; } if ( value.bits != 0 ) { entries.add( Pair.of( new LabelScanKey().set( labelId, currentRange ), value ) ); } return new Labels( labelId, entries ); }
@Override public LabelScanKey newKey() { return new LabelScanKey(); }
private RawCursor<Hit<LabelScanKey,LabelScanValue>,IOException> seekerForLabel( long startId, int labelId ) throws IOException { LabelScanKey from = new LabelScanKey( labelId, rangeOf( startId ) ); LabelScanKey to = new LabelScanKey( labelId, Long.MAX_VALUE ); return index.seek( from, to ); }
@Override public boolean isEmpty() throws IOException { try ( RawCursor<Hit<LabelScanKey,LabelScanValue>,IOException> cursor = index.seek( new LabelScanKey( 0, 0 ), new LabelScanKey( Integer.MAX_VALUE, Long.MAX_VALUE ) ) ) { return !cursor.next(); } }
new LabelScanKey().set( labelId, 0 ), new LabelScanKey().set( labelId, Long.MAX_VALUE ) ); new LabelScanKey().set( Integer.MAX_VALUE, Long.MAX_VALUE ), new LabelScanKey().set( 0, -1 ) ) )