public abstract class RaftReplicateOp extends Operation implements IdentifiedDataSerializable, RaftSystemOperation, ExecutionCallback
GENERIC_PARTITION_ID
Modifier and Type | Method and Description |
---|---|
String |
getServiceName() |
void |
onFailure(Throwable t)
Called when an execution is completed with an error.
|
void |
onResponse(Object response)
Called when an execution is completed successfully.
|
protected void |
readInternal(ObjectDataInput in) |
protected abstract ICompletableFuture |
replicate(RaftNode raftNode) |
boolean |
returnsResponse()
Method is intended to be overridden.
|
void |
run()
Runs the operation.
|
protected void |
toString(StringBuilder sb)
A template method allows for additional information to be passed into
the
Operation.toString() method. |
boolean |
validatesTarget() |
protected void |
writeInternal(ObjectDataOutput out) |
afterRun, beforeRun, call, executedLocally, getCallerAddress, getCallerUuid, getCallId, getCallTimeout, getConnection, getInvocationTime, getLogger, getNodeEngine, getOperationResponseHandler, getPartitionId, getReplicaIndex, getResponse, getService, getWaitTimeout, isUrgent, logError, onExecutionFailure, onInvocationException, onSetCallId, readData, requiresExplicitServiceName, sendResponse, setCallerUuid, setNodeEngine, setOperationResponseHandler, setPartitionId, setReplicaIndex, setService, setServiceName, setValidateTarget, setWaitTimeout, toString, writeData
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getFactoryId, getId
readData, writeData
public final void run()
Operation
Operation.run()
or Operation.call()
method should be implemented; not both.
Runs after wait-support, supposed to do actual operationrun
in class Operation
Operation.call()
protected abstract ICompletableFuture replicate(RaftNode raftNode)
public void onResponse(Object response)
ExecutionCallback
onResponse
in interface ExecutionCallback
response
- the result of the successful executionpublic void onFailure(Throwable t)
ExecutionCallback
onFailure
in interface ExecutionCallback
t
- the exception that is thrownpublic final boolean returnsResponse()
Operation
true
,
Operation.getResponse()
will be called right after Operation.run()
method.
If it returns false
, Operation.sendResponse(Object)
must be
called later to finish the operation.
In other words, true
is for synchronous operation and
false
is for asynchronous one.
Default implementation is synchronous operation (true
).
returnsResponse
in class Operation
public final boolean validatesTarget()
validatesTarget
in class Operation
public final String getServiceName()
getServiceName
in class Operation
protected void writeInternal(ObjectDataOutput out) throws IOException
writeInternal
in class Operation
IOException
protected void readInternal(ObjectDataInput in) throws IOException
readInternal
in class Operation
IOException
protected void toString(StringBuilder sb)
Operation
Operation.toString()
method. So an Operation subclass can override
this method and add additional debugging content. The default
implementation does nothing so one is not forced to provide an empty
implementation.
It is a good practice to always call the super.toString(stringBuffer)
when implementing this method to make sure that the super class can
inject content if needed.Copyright © 2020 Hazelcast, Inc.. All Rights Reserved.