2020-12-07 22:15:18 +01:00
|
|
|
package it.cavallium.dbengine.database;
|
|
|
|
|
2022-03-16 13:47:56 +01:00
|
|
|
import io.netty5.buffer.api.Buffer;
|
|
|
|
import io.netty5.buffer.api.BufferAllocator;
|
|
|
|
import io.netty5.buffer.api.Send;
|
2021-11-12 02:05:44 +01:00
|
|
|
import it.cavallium.dbengine.database.serialization.SerializationFunction;
|
|
|
|
import it.unimi.dsi.fastutil.bytes.ByteList;
|
|
|
|
import java.util.function.Function;
|
2020-12-07 22:15:18 +01:00
|
|
|
import org.jetbrains.annotations.Nullable;
|
2021-01-30 10:52:14 +01:00
|
|
|
import reactor.core.publisher.Mono;
|
2020-12-07 22:15:18 +01:00
|
|
|
|
|
|
|
public interface LLSingleton extends LLKeyValueDatabaseStructure {
|
|
|
|
|
2021-11-12 02:05:44 +01:00
|
|
|
|
|
|
|
BufferAllocator getAllocator();
|
|
|
|
|
2022-03-20 14:33:27 +01:00
|
|
|
Mono<Send<Buffer>> get(@Nullable LLSnapshot snapshot);
|
2020-12-07 22:15:18 +01:00
|
|
|
|
2022-03-20 14:33:27 +01:00
|
|
|
Mono<Void> set(Mono<Send<Buffer>> value);
|
2021-11-12 02:05:44 +01:00
|
|
|
|
2022-03-20 14:33:27 +01:00
|
|
|
default Mono<Send<Buffer>> update(SerializationFunction<@Nullable Send<Buffer>, @Nullable Buffer> updater,
|
|
|
|
UpdateReturnMode updateReturnMode) {
|
|
|
|
return this
|
|
|
|
.updateAndGetDelta(updater)
|
|
|
|
.transform(prev -> LLUtils.resolveLLDelta(prev, updateReturnMode));
|
|
|
|
}
|
|
|
|
|
|
|
|
Mono<Send<LLDelta>> updateAndGetDelta(SerializationFunction<@Nullable Send<Buffer>, @Nullable Buffer> updater);
|
|
|
|
|
|
|
|
String getColumnName();
|
|
|
|
|
|
|
|
String getName();
|
2020-12-07 22:15:18 +01:00
|
|
|
}
|