org.infinispan.commands.ReplicableCommand Maven / Gradle / Ivy
package org.infinispan.commands;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
import org.infinispan.context.InvocationContext;
import org.infinispan.util.concurrent.CompletableFutures;
/**
* The core of the command-based cache framework. Commands correspond to specific areas of functionality in the cache,
* and can be replicated using the {@link org.infinispan.remoting.rpc.RpcManager}
*
* @author [email protected]
* @author Manik Surtani
* @since 4.0
*/
public interface ReplicableCommand {
/**
* Performs the primary function of the command. Please see specific implementation classes for details on what is
* performed as well as return types. Important: this method will be invoked at the end of interceptors chain.
* It should never be called directly from a custom interceptor.
*
* @param ctx invocation context
* @return arbitrary return value generated by performing this command
* @throws Throwable in the event of problems.
* @deprecated Since 9.0, only {@link VisitableCommand}s should implement {@code perform(InvocationContext)}.
*/
@Deprecated
default Object perform(InvocationContext ignored) throws Throwable {
return invoke();
}
default Object invoke() throws Throwable {
try {
return invokeAsync().join();
} catch (CompletionException e) {
throw CompletableFutures.extractException(e);
}
}
/**
* Invoke the command on a remote node, asynchronously.
*
* @since 9.0
*/
default CompletableFuture
© 2015 - 2025 Weber Informatics LLC | Privacy Policy