HCOLL-184 added a method to return the server version from the stateless client

This commit is contained in:
Rob Austin
2014-12-23 11:25:58 +00:00
parent 12fe331c55
commit 9b7279daf0
3 changed files with 48 additions and 0 deletions
@@ -114,6 +114,7 @@ class StatelessChronicleMap<K, V> implements ChronicleMap<K, V>, Closeable, Clon
PUT_IF_ABSENT,
REMOVE_WITH_VALUE,
TO_STRING,
VERSION,
PUT_ALL,
PUT_ALL_WITHOUT_ACC,
HASH_CODE,
@@ -431,6 +432,11 @@ class StatelessChronicleMap<K, V> implements ChronicleMap<K, V>, Closeable, Clon
return fetchObject(String.class, TO_STRING);
}
@NotNull
public String version() {
return fetchObject(String.class, VERSION);
}
public boolean isEmpty() {
return fetchBoolean(IS_EMPTY);
}
@@ -1485,9 +1485,13 @@ class StatelessServerConnector<K, V> {
case REMOVE_WITH_VALUE:
return removeWithValue(reader, writer.in(), sizeLocation, timestamp, identifier);
case TO_STRING:
return toString(writer.in(), sizeLocation);
case VERSION:
return version(writer.in(), sizeLocation);
case PUT_ALL:
return putAll(reader, writer.in(), sizeLocation, timestamp, identifier);
@@ -1609,6 +1613,25 @@ class StatelessServerConnector<K, V> {
return null;
}
@Nullable
private Work version(@NotNull Bytes writer, final long sizeLocation) {
final long remaining = writer.remaining();
try {
String result = map.version();
writer.writeObject(result);
} catch (Throwable e) {
return sendException(writer, sizeLocation, e);
}
assert remaining > 4;
writeSizeAndFlags(sizeLocation, false, writer);
return null;
}
@SuppressWarnings("SameReturnValue")
@Nullable
private Work sendException(@NotNull Bytes writer, long sizeLocation, @NotNull Throwable e) {