Class DefaultRPCChain
java.lang.Object
eu.cloudnetservice.driver.network.rpc.defaults.DefaultRPCProvider
eu.cloudnetservice.driver.network.rpc.defaults.rpc.DefaultRPCChain
- All Implemented Interfaces:
ChainableRPC,RPCChain,RPCExecutable,RPCProvider
Represents the default implementation of a rpc chain.
- Since:
- 4.0
-
Field Summary
FieldsFields inherited from class eu.cloudnetservice.driver.network.rpc.defaults.DefaultRPCProvider
dataBufFactory, objectMapper, targetClass -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription<T> @NonNull eu.cloudnetservice.common.concurrent.Task<T>fire()Fires the current rpc into the first channel of the associated network component and returns a future which will be completed with the return value of the method execution when it's available or completed with a timeout exception when the query packet future times out.<T> @NonNull eu.cloudnetservice.common.concurrent.Task<T>fire(@NonNull NetworkChannel component) Fires the current rpc into the given network channel and returns a future which will be completed with the return value of the method execution when it's available or completed with a timeout exception when the query packet future times out.voidFires the current rpc into the first channel of the associated network component and doesn't wait for the result of the rpc to become available.voidfireAndForget(@NonNull NetworkChannel component) Fires the current rpc into the given network channel and doesn't wait for the result of the rpc to become available.<T> TfireSync()Fires the current rpc into the first channel of the associated network component and waits for the result to become available, or times out after 30 seconds.<T> TfireSync(@NonNull NetworkChannel component) Fires the current rpc into the given network channel and waits for the result to become available, or times out after 30 seconds.head()Get the current last call of the chain (the head).Adds a join statement to the current rpc chain.joins()Get all joins of the rpc in the order in which they get called.protected voidwriteRPCInformation(DataBuf.Mutable dataBuf, @NonNull RPC rpc, boolean last) Writes the given rpc into the given buffer.Methods inherited from class eu.cloudnetservice.driver.network.rpc.defaults.DefaultRPCProvider
dataBufFactory, objectMapper, targetClassMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface eu.cloudnetservice.driver.network.rpc.RPCProvider
dataBufFactory, objectMapper, targetClass
-
Field Details
-
rootRPC
-
headRPC
-
rpcChain
-
-
Constructor Details
-
DefaultRPCChain
Constructs a new default rpc chain instance.- Parameters:
rootRPC- the root rpc of the chain, also known as the entry point.headRPC- the next rpc to invoke after the root rpc.- Throws:
NullPointerException- if either the given root or head rpc is null.
-
DefaultRPCChain
protected DefaultRPCChain(@NonNull @NonNull RPC rootRPC, @NonNull @NonNull RPC headRPC, @NonNull @NonNull List<RPC> rpcChain) Constructs a new default rpc chain instance.- Parameters:
rootRPC- the root rpc of the chain, also known as the entry point.headRPC- the next rpc to invoke after the root rpc.rpcChain- the full chain of rpc invocations to call on top of the root rpc.- Throws:
NullPointerException- if either the given root or head rpc is null.
-
-
Method Details
-
join
Adds a join statement to the current rpc chain. This method always returns a new rpc chain with the given rpc as the last rpc. Therefore, the result type expectation when firring the rpc chain is based on the last rpc given to the chain using this method.A chain can be re-used infinite times and even joined on without making a change to the original rpc chain.
- Specified by:
joinin interfaceChainableRPC- Parameters:
rpc- the rpc to join on the result of the current chain.- Returns:
- a new rpc chain instance with the given rpc as its head rpc.
-
head
Get the current last call of the chain (the head). All result expectations are based on this rpc. -
joins
Get all joins of the rpc in the order in which they get called. The first call in the chain will be the first element of this collection (method call order). -
fireAndForget
public void fireAndForget()Fires the current rpc into the first channel of the associated network component and doesn't wait for the result of the rpc to become available. This method will not suspend the current thread.- Specified by:
fireAndForgetin interfaceRPCExecutable
-
fireSync
Fires the current rpc into the first channel of the associated network component and waits for the result to become available, or times out after 30 seconds. This method will suspend the calling thread.- Specified by:
fireSyncin interfaceRPCExecutable- Type Parameters:
T- the expected return type.- Returns:
- the result of the method invocation, might be null if the remote method returned null.
-
fire
Fires the current rpc into the first channel of the associated network component and returns a future which will be completed with the return value of the method execution when it's available or completed with a timeout exception when the query packet future times out.- Specified by:
firein interfaceRPCExecutable- Type Parameters:
T- the expected return type.- Returns:
- a task completed with the result of the method invocation, null if the remote method returned null.
-
fireAndForget
Fires the current rpc into the given network channel and doesn't wait for the result of the rpc to become available. This method will not suspend the current thread.- Specified by:
fireAndForgetin interfaceRPCExecutable- Parameters:
component- the network channel to which the rpc should be sent.
-
fireSync
Fires the current rpc into the given network channel and waits for the result to become available, or times out after 30 seconds. This method will suspend the calling thread.- Specified by:
fireSyncin interfaceRPCExecutable- Type Parameters:
T- the expected return type.- Parameters:
component- the network channel to which the rpc should be sent.- Returns:
- the result of the method invocation, might be null if the remote method returned null.
-
fire
@NonNull public <T> @NonNull eu.cloudnetservice.common.concurrent.Task<T> fire(@NonNull @NonNull NetworkChannel component) Fires the current rpc into the given network channel and returns a future which will be completed with the return value of the method execution when it's available or completed with a timeout exception when the query packet future times out.- Specified by:
firein interfaceRPCExecutable- Type Parameters:
T- the expected return type.- Parameters:
component- the network channel to which the rpc should be sent.- Returns:
- a task completed with the result of the method invocation, null if the remote method returned null.
-
writeRPCInformation
protected void writeRPCInformation(@NonNull DataBuf.Mutable dataBuf, @NonNull @NonNull RPC rpc, boolean last) Writes the given rpc into the given buffer.- Parameters:
dataBuf- the data buffer to write the rpc to.rpc- the rpc to serialize.last- true if the given rpc is the last rpc in the call chain, false otherwise.- Throws:
NullPointerException- if either the given buffer or rpc is null.
-