CavalliumDBEngine/src/main/java/it/cavallium/dbengine/database/memory/LLMemorySingleton.java
2023-03-06 12:19:08 +01:00

61 lines
1.6 KiB
Java

package it.cavallium.dbengine.database.memory;
import it.cavallium.buffer.Buf;
import it.cavallium.dbengine.database.LLDelta;
import it.cavallium.dbengine.database.LLDictionaryResultType;
import it.cavallium.dbengine.database.LLSingleton;
import it.cavallium.dbengine.database.LLSnapshot;
import it.cavallium.dbengine.database.UpdateReturnMode;
import it.cavallium.dbengine.database.disk.BinarySerializationFunction;
import java.nio.charset.StandardCharsets;
import org.jetbrains.annotations.Nullable;
public class LLMemorySingleton implements LLSingleton {
private final LLMemoryDictionary dict;
private final String columnNameString;
private final Buf singletonName;
public LLMemorySingleton(LLMemoryDictionary dict, String columnNameString, byte[] singletonName) {
this.dict = dict;
this.columnNameString = columnNameString;
this.singletonName = Buf.wrap(singletonName);
}
@Override
public String getDatabaseName() {
return dict.getDatabaseName();
}
@Override
public Buf get(@Nullable LLSnapshot snapshot) {
return dict.get(snapshot, singletonName);
}
@Override
public void set(Buf value) {
dict.put(singletonName, value, LLDictionaryResultType.VOID);
}
@Override
public Buf update(BinarySerializationFunction updater,
UpdateReturnMode updateReturnMode) {
return dict.update(singletonName, updater, updateReturnMode);
}
@Override
public LLDelta updateAndGetDelta(BinarySerializationFunction updater) {
return dict.updateAndGetDelta(singletonName, updater);
}
@Override
public String getColumnName() {
return columnNameString;
}
@Override
public String getName() {
return singletonName.toString(StandardCharsets.UTF_8);
}
}