package it.cavallium.dbengine.database.collections; import io.netty5.buffer.api.Buffer; import it.cavallium.dbengine.client.CompositeSnapshot; import it.cavallium.dbengine.database.BufSupplier; import it.cavallium.dbengine.database.LLDictionary; import it.cavallium.dbengine.database.serialization.Serializer; import it.cavallium.dbengine.database.serialization.SerializerFixedBinaryLength; import it.unimi.dsi.fastutil.objects.Object2ObjectSortedMap; import org.jetbrains.annotations.Nullable; import reactor.core.publisher.Mono; public class SubStageGetterMap implements SubStageGetter, DatabaseMapDictionary> { final SerializerFixedBinaryLength keySerializer; final Serializer valueSerializer; public SubStageGetterMap(SerializerFixedBinaryLength keySerializer, Serializer valueSerializer) { this.keySerializer = keySerializer; this.valueSerializer = valueSerializer; } @Override public Mono> subStage(LLDictionary dictionary, @Nullable CompositeSnapshot snapshot, Mono prefixKeyMono) { return prefixKeyMono.map(prefixKey -> DatabaseMapDictionary.tail(dictionary, BufSupplier.ofOwned(prefixKey), keySerializer, valueSerializer )); } public int getKeyBinaryLength() { return keySerializer.getSerializedBinaryLength(); } }