Package org.infinispan.commands.remote
Class SingleRpcCommand
- java.lang.Object
-
- org.infinispan.commands.remote.BaseRpcCommand
-
- org.infinispan.commands.remote.BaseRpcInvokingCommand
-
- org.infinispan.commands.remote.SingleRpcCommand
-
- All Implemented Interfaces:
CacheRpcCommand
,ReplicableCommand
public class SingleRpcCommand extends BaseRpcInvokingCommand
Aggregates a single command for replication.- Author:
- Mircea.Markus@jboss.com
-
-
Field Summary
Fields Modifier and Type Field Description static int
COMMAND_ID
-
Fields inherited from class org.infinispan.commands.remote.BaseRpcInvokingCommand
icf, interceptorChain
-
Fields inherited from class org.infinispan.commands.remote.BaseRpcCommand
cacheName
-
-
Constructor Summary
Constructors Constructor Description SingleRpcCommand(ByteString cacheName)
SingleRpcCommand(ByteString cacheName, ReplicableCommand command)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canBlock()
If true, the command is processed asynchronously in a thread provided by an Infinispan thread pool.boolean
equals(Object o)
ReplicableCommand
getCommand()
byte
getCommandId()
Used by marshallers to convert this command into an id for streaming.int
hashCode()
CompletableFuture<Object>
invokeAsync()
Invoke the command asynchronously.boolean
isReturnValueExpected()
If true, a return value will be provided when performed remotely.boolean
isSuccessful()
If true, a return value will be marshalled as aSuccessfulResponse
, otherwise it will be marshalled as aUnsuccessfulResponse
.Object
perform(InvocationContext ctx)
Performs the primary function of the command.void
readFrom(ObjectInput input)
Reads this instance from the stream written byReplicableCommand.writeTo(ObjectOutput)
.String
toString()
void
writeTo(ObjectOutput output)
Writes this instance to theObjectOutput
.-
Methods inherited from class org.infinispan.commands.remote.BaseRpcInvokingCommand
init, processVisitableCommand, processVisitableCommandAsync
-
Methods inherited from class org.infinispan.commands.remote.BaseRpcCommand
getCacheName, getOrigin, setOrigin
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.infinispan.commands.ReplicableCommand
invoke
-
-
-
-
Field Detail
-
COMMAND_ID
public static final int COMMAND_ID
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SingleRpcCommand
public SingleRpcCommand(ByteString cacheName, ReplicableCommand command)
-
SingleRpcCommand
public SingleRpcCommand(ByteString cacheName)
-
-
Method Detail
-
getCommandId
public byte getCommandId()
Description copied from interface:ReplicableCommand
Used by marshallers to convert this command into an id for streaming.- Returns:
- the method id of this command. This is compatible with pre-2.2.0 MethodCall ids.
-
writeTo
public void writeTo(ObjectOutput output) throws IOException
Description copied from interface:ReplicableCommand
Writes this instance to theObjectOutput
.- Parameters:
output
- the stream.- Throws:
IOException
- if an error occurred during the I/O.
-
readFrom
public void readFrom(ObjectInput input) throws IOException, ClassNotFoundException
Description copied from interface:ReplicableCommand
Reads this instance from the stream written byReplicableCommand.writeTo(ObjectOutput)
.- Parameters:
input
- the stream to read.- Throws:
IOException
- if an error occurred during the I/O.ClassNotFoundException
- if it tries to load an undefined class.
-
perform
public Object perform(InvocationContext ctx) throws Throwable
Description copied from 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.- Parameters:
ctx
- invocation context- Returns:
- arbitrary return value generated by performing this command
- Throws:
Throwable
- in the event of problems.
-
invokeAsync
public CompletableFuture<Object> invokeAsync() throws Throwable
Description copied from interface:ReplicableCommand
Invoke the command asynchronously.This method replaces
ReplicableCommand.perform(InvocationContext)
for remote execution. The default implementation andReplicableCommand.perform(InvocationContext)
will be removed in future versions.- Throws:
Throwable
-
toString
public String toString()
- Overrides:
toString
in classBaseRpcCommand
-
getCommand
public ReplicableCommand getCommand()
-
isReturnValueExpected
public boolean isReturnValueExpected()
Description copied from interface:ReplicableCommand
If true, a return value will be provided when performed remotely. Otherwise, a remoteResponseGenerator
may choose to simply return null to save on marshalling costs.- Returns:
- true or false
-
isSuccessful
public boolean isSuccessful()
Description copied from interface:ReplicableCommand
If true, a return value will be marshalled as aSuccessfulResponse
, otherwise it will be marshalled as aUnsuccessfulResponse
.
-
canBlock
public boolean canBlock()
Description copied from interface:ReplicableCommand
If true, the command is processed asynchronously in a thread provided by an Infinispan thread pool. Otherwise, the command is processed directly in the JGroups thread. This feature allows to avoid keep a JGroups thread busy that can originate discard of messages and retransmissions. So, the commands that can block (waiting for some state, acquiring locks, etc.) should return true.- Specified by:
canBlock
in interfaceReplicableCommand
- Overrides:
canBlock
in classBaseRpcCommand
- Returns:
true
if the command can block/wait,false
otherwise
-
-