in protosimplestore/src/main/java/com/uber/simplestore/proto/impl/SimpleProtoStoreImpl.java [72:89]
public <T extends MessageLite> ListenableFuture<T> put(String key, @Nullable T value) {
ListenableFuture<byte[]> proto =
Futures.submitAsync(
() -> {
byte[] bytes = null;
if (value != null && !value.equals(value.getDefaultInstanceForType())) {
bytes = value.toByteArray();
}
return Futures.immediateFuture(bytes);
},
SimpleStoreConfig.getComputationExecutor());
return Futures.transformAsync(
proto,
p ->
Futures.transform(
simpleStore.put(key, p), o -> value, SimpleStoreConfig.getComputationExecutor()),
SimpleStoreConfig.getComputationExecutor());
}