Class DefaultRPC

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

public final class DefaultRPC extends DefaultRPCProvider implements eu.cloudnetservice.driver.network.rpc.RPC
The default implementation of a rpc.
Since:
4.0
  • Field Details

    • sender

      private final eu.cloudnetservice.driver.network.rpc.RPCSender sender
    • channelSupplier

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

      private final Object[] arguments
    • targetMethod

      private final DefaultRPCMethodMetadata targetMethod
    • dropResult

      private boolean dropResult
    • executionTimeout

      private Duration executionTimeout
  • Constructor Details

    • DefaultRPC

      public DefaultRPC(@NonNull @NonNull Class<?> targetClass, @NonNull @NonNull eu.cloudnetservice.driver.network.rpc.factory.RPCFactory sourceFactory, @NonNull @NonNull eu.cloudnetservice.driver.network.object.ObjectMapper objectMapper, @NonNull @NonNull eu.cloudnetservice.driver.network.buffer.DataBufFactory dataBufFactory, @NonNull @NonNull eu.cloudnetservice.driver.network.rpc.RPCSender sender, @NonNull @NonNull Supplier<eu.cloudnetservice.driver.network.NetworkChannel> channelSupplier, @Nullable @Nullable Duration executionTimeout, @NonNull @NonNull DefaultRPCMethodMetadata targetMethod, @NonNull @NonNull Object[] arguments)
      Constructs a new default rpc instance.
      Parameters:
      targetClass - the class targeted by the RPC.
      sourceFactory - the rpc factory that constructed this object.
      objectMapper - the object mapper used for data serialization during rpc execution.
      dataBufFactory - the data buffer factory to use for buffer allocations during rpc execution.
      sender - the sender that constructed this rpc.
      channelSupplier - the default channel supplier to use during execution if none is provided.
      executionTimeout - the timeout for the execution of this rpc.
      targetMethod - the target method that should be invoked.
      arguments - the arguments to supply for execution.
      Throws:
      NullPointerException - if one of the given arguments, except the timeout, is null.
  • Method Details

    • 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
    • sender

      @NonNull public @NonNull eu.cloudnetservice.driver.network.rpc.RPCSender sender()
      Specified by:
      sender in interface eu.cloudnetservice.driver.network.rpc.RPC
    • className

      @NonNull public @NonNull String className()
      Specified by:
      className in interface eu.cloudnetservice.driver.network.rpc.RPC
    • methodName

      @NonNull public @NonNull String methodName()
      Specified by:
      methodName in interface eu.cloudnetservice.driver.network.rpc.RPC
    • methodDescriptor

      @NonNull public @NonNull String methodDescriptor()
      Specified by:
      methodDescriptor in interface eu.cloudnetservice.driver.network.rpc.RPC
    • arguments

      @NonNull public @NonNull Object[] arguments()
      Specified by:
      arguments in interface eu.cloudnetservice.driver.network.rpc.RPC
    • expectedResultType

      @NonNull public @NonNull Type expectedResultType()
      Specified by:
      expectedResultType in interface eu.cloudnetservice.driver.network.rpc.RPC
    • targetMethod

      @NonNull public @NonNull eu.cloudnetservice.driver.network.rpc.introspec.RPCMethodMetadata targetMethod()
      Specified by:
      targetMethod in interface eu.cloudnetservice.driver.network.rpc.RPC
    • timeout

      @NonNull public @NonNull eu.cloudnetservice.driver.network.rpc.RPC timeout(@Nullable @Nullable Duration timeout)
      Specified by:
      timeout in interface eu.cloudnetservice.driver.network.rpc.RPC
    • timeout

      @Nullable public @Nullable Duration timeout()
      Specified by:
      timeout in interface eu.cloudnetservice.driver.network.rpc.RPC
    • dropResult

      @NonNull public @NonNull eu.cloudnetservice.driver.network.rpc.RPC dropResult()
      Specified by:
      dropResult in interface eu.cloudnetservice.driver.network.rpc.RPC
    • resultDropped

      public boolean resultDropped()
      Specified by:
      resultDropped in interface eu.cloudnetservice.driver.network.rpc.RPC
    • 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

      @Nullable 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