package org.infinispan.interceptors;
import java.util.concurrent.CompletableFuture;
import org.infinispan.commands.VisitableCommand;
import org.infinispan.context.InvocationContext;
import org.infinispan.interceptors.impl.SimpleAsyncInvocationStage;
/**
* @author Dan Berindei
* @since 9.0
*/
public class SyncInvocationStage extends InvocationStage {
private Object rv;
public SyncInvocationStage(Object rv) {
this.rv = rv;
}
@Override
public Object get() throws Throwable {
return rv;
}
@Override
public boolean isDone() {
return true;
}
@Override
public CompletableFuture<Object> toCompletableFuture() {
return CompletableFuture.completedFuture(rv);
}
@Override
public Object addCallback(InvocationContext ctx, VisitableCommand command, InvocationCallback function) {
try {
return function.apply(ctx, command, rv, null);
} catch (Throwable throwable) {
return new SimpleAsyncInvocationStage(throwable);
}
}
}