Class DefaultRPCChain

java.lang.Object
eu.cloudnetservice.driver.impl.network.rpc.DefaultRPCProvider
eu.cloudnetservice.driver.impl.network.rpc.rpc.DefaultRPCChain
All Implemented Interfaces:
eu.cloudnetservice.driver.network.rpc.ChainableRPC, eu.cloudnetservice.driver.network.rpc.RPCChain, eu.cloudnetservice.driver.network.rpc.RPCExecutable, eu.cloudnetservice.driver.network.rpc.RPCProvider

public final class DefaultRPCChain extends DefaultRPCProvider implements eu.cloudnetservice.driver.network.rpc.RPCChain
Represents the default implementation of a rpc chain.
Since:
4.0
  • Field Details

    • chainHead

      private final eu.cloudnetservice.driver.network.rpc.RPC chainHead
    • chainTail

      private final eu.cloudnetservice.driver.network.rpc.RPC chainTail
    • fullChain

      private final List<eu.cloudnetservice.driver.network.rpc.RPC> fullChain
    • channelSupplier

      private final Supplier<eu.cloudnetservice.driver.network.NetworkChannel> channelSupplier
  • Constructor Details

    • DefaultRPCChain

      private DefaultRPCChain(@NonNull @NonNull eu.cloudnetservice.driver.network.rpc.RPC chainHead, @NonNull @NonNull eu.cloudnetservice.driver.network.rpc.RPC chainTail, @NonNull @NonNull List<eu.cloudnetservice.driver.network.rpc.RPC> fullChain, @NonNull @NonNull Supplier<eu.cloudnetservice.driver.network.NetworkChannel> channelSupplier)
      Constructs a new rpc chain instance.
      Parameters:
      chainHead - the first rpc in the execution chain.
      chainTail - the last rpc in the execution chain.
      fullChain - the full chain of rpc to invoke.
      channelSupplier - the target channel supplier to use for method invocation if no channel is provided.
      Throws:
      NullPointerException - if one of the given parameters is null.
  • Method Details

    • of

      @NonNull public static @NonNull DefaultRPCChain of(@NonNull @NonNull eu.cloudnetservice.driver.network.rpc.RPC root, @NonNull @NonNull eu.cloudnetservice.driver.network.rpc.RPC next, @NonNull @NonNull Supplier<eu.cloudnetservice.driver.network.NetworkChannel> channelSupplier)
      Constructs a new rpc chain using the given root and tail rpc.
      Parameters:
      root - the root rpc for the chain.
      next - the tail rpc for the chain.
      channelSupplier - the target channel supplier to use for method invocation if no channel is provided.
      Returns:
      the constructed rpc chain.
      Throws:
      NullPointerException - if the given root rpc, tail rpc or channel supplier is null.
    • join

      @NonNull public @NonNull eu.cloudnetservice.driver.network.rpc.RPCChain join(@NonNull @NonNull eu.cloudnetservice.driver.network.rpc.RPC rpc)
      Specified by:
      join in interface eu.cloudnetservice.driver.network.rpc.ChainableRPC
    • tail

      @NonNull public @NonNull eu.cloudnetservice.driver.network.rpc.RPC tail()
      Specified by:
      tail in interface eu.cloudnetservice.driver.network.rpc.RPCChain
    • joins

      @NonNull public @NonNull Collection<eu.cloudnetservice.driver.network.rpc.RPC> joins()
      Specified by:
      joins in interface eu.cloudnetservice.driver.network.rpc.RPCChain
    • fireAndForget

      public void fireAndForget()
      Specified by:
      fireAndForget in interface eu.cloudnetservice.driver.network.rpc.RPCExecutable
    • fireSync

      public <T> @UnknownNullability T fireSync()
      Specified by:
      fireSync in interface eu.cloudnetservice.driver.network.rpc.RPCExecutable
    • fire

      @NonNull public <T> @NonNull CompletableFuture<T> fire()
      Specified by:
      fire in interface eu.cloudnetservice.driver.network.rpc.RPCExecutable
    • fireAndForget

      public void fireAndForget(@NonNull @NonNull eu.cloudnetservice.driver.network.NetworkChannel component)
      Specified by:
      fireAndForget in interface eu.cloudnetservice.driver.network.rpc.RPCExecutable
    • fireSync

      @NonNull public <T> T fireSync(@NonNull @NonNull eu.cloudnetservice.driver.network.NetworkChannel component)
      Specified by:
      fireSync in interface eu.cloudnetservice.driver.network.rpc.RPCExecutable
    • fire

      @NonNull public <T> @NonNull CompletableFuture<T> fire(@NonNull @NonNull eu.cloudnetservice.driver.network.NetworkChannel component)
      Specified by:
      fire in interface eu.cloudnetservice.driver.network.rpc.RPCExecutable