Skip to content

Commit 219c403

Browse files
committed
merge-register = mv-reg with user defined merge strategy
1 parent f8b2c5f commit 219c403

3 files changed

Lines changed: 35 additions & 1 deletion

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
group 'eu.antidotedb'
2-
version '0.2.0'
2+
version '0.2.1'
33

44
apply plugin: 'java'
55
apply plugin: 'maven'

src/main/java/eu/antidotedb/client/Key.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,14 @@ public static FlagKey flag_dw(String key) {
270270
return flag_ew(ByteString.copyFromUtf8(key));
271271
}
272272

273+
public static <V> MergeRegisterKey<V> mergeRegister(ByteString key, ValueCoder<V> format, MergeRegisterKey.ValueMerger<V> merger) {
274+
return new MergeRegisterKey<>(key, format, merger);
275+
}
276+
277+
public static <V> MergeRegisterKey<V> mergeRegister(String key, ValueCoder<V> format, MergeRegisterKey.ValueMerger<V> merger) {
278+
return mergeRegister(ByteString.copyFromUtf8(key), format, merger);
279+
}
280+
273281

274282
AntidotePB.ApbMapKey.Builder toApbMapKey() {
275283
AntidotePB.ApbMapKey.Builder builder = AntidotePB.ApbMapKey.newBuilder();
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package eu.antidotedb.client;
2+
3+
import com.google.protobuf.ByteString;
4+
import eu.antidotedb.antidotepb.AntidotePB;
5+
6+
import java.util.List;
7+
8+
public class MergeRegisterKey<V> extends Key<V> {
9+
public interface ValueMerger<V> {
10+
V merge(List<V> concValues);
11+
}
12+
13+
private ValueCoder<V> format;
14+
private ValueMerger<V> merger;
15+
16+
MergeRegisterKey(ByteString key, ValueCoder<V> format, ValueMerger<V> merger) {
17+
super(AntidotePB.CRDT_type.MVREG, key);
18+
this.format = format;
19+
this.merger = merger;
20+
}
21+
22+
@Override
23+
V readResponseToValue(AntidotePB.ApbReadObjectResp resp) {
24+
return merger.merge(ResponseDecoder.multiValueRegister(format).readResponseToValue(resp));
25+
}
26+
}

0 commit comments

Comments
 (0)