package it.cavallium.dbengine.database.collections; import io.net5.buffer.api.Buffer; import io.net5.buffer.api.Send; import it.cavallium.dbengine.client.CompositeSnapshot; import it.cavallium.dbengine.database.LLDictionary; import it.cavallium.dbengine.database.serialization.Serializer; import org.jetbrains.annotations.Nullable; import reactor.core.publisher.Mono; public class SubStageGetterSingle implements SubStageGetter> { private final Serializer serializer; public SubStageGetterSingle(Serializer serializer) { this.serializer = serializer; } @Override public Mono> subStage(LLDictionary dictionary, @Nullable CompositeSnapshot snapshot, Mono> keyPrefixMono) { return Mono.usingWhen( keyPrefixMono, keyPrefix -> Mono .>fromSupplier(() -> new DatabaseSingle<>(dictionary, keyPrefix, serializer)), keyPrefix -> Mono.fromRunnable(keyPrefix::close) ); } }