Class DefaultRPCSender

java.lang.Object
eu.cloudnetservice.driver.impl.network.rpc.DefaultRPCProvider
eu.cloudnetservice.driver.impl.network.rpc.sender.DefaultRPCSender
All Implemented Interfaces:
eu.cloudnetservice.driver.network.rpc.RPCProvider, eu.cloudnetservice.driver.network.rpc.RPCSender

public final class DefaultRPCSender extends DefaultRPCProvider implements eu.cloudnetservice.driver.network.rpc.RPCSender
The default implementation of an RPC sender.
Since:
4.0
  • Field Details

    • STACK_WALKER

      private static final StackWalker STACK_WALKER
    • rpcTargetMeta

      private final RPCClassMetadata rpcTargetMeta
    • channelSupplier

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

    • DefaultRPCSender

      public DefaultRPCSender(@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 RPCClassMetadata rpcTargetMeta, @NonNull @NonNull Supplier<eu.cloudnetservice.driver.network.NetworkChannel> channelSupplier)
      Constructs a new default rpc sender instance.
      Parameters:
      targetClass - the class in which this sender can call methods.
      sourceFactory - the rpc factory that constructed this object.
      objectMapper - the object mapper to use to write and read data from the buffers.
      dataBufFactory - the buffer factory used for buffer allocations.
      rpcTargetMeta - the metadata of the target class handled by this sender.
      channelSupplier - the channel supplier for RPCs without a specified target channel.
      Throws:
      NullPointerException - if one of the given parameters is null.
  • Method Details

    • invokeCaller

      @NonNull public @NonNull eu.cloudnetservice.driver.network.rpc.RPC invokeCaller(Object... args)
      Specified by:
      invokeCaller in interface eu.cloudnetservice.driver.network.rpc.RPCSender
    • invokeCallerWithOffset

      @NonNull public @NonNull eu.cloudnetservice.driver.network.rpc.RPC invokeCallerWithOffset(int callerStackOffset, Object... args)
      Specified by:
      invokeCallerWithOffset in interface eu.cloudnetservice.driver.network.rpc.RPCSender
    • invokeMethod

      @NonNull public @NonNull eu.cloudnetservice.driver.network.rpc.RPC invokeMethod(@NonNull @NonNull String methodName, Object... args)
      Specified by:
      invokeMethod in interface eu.cloudnetservice.driver.network.rpc.RPCSender
    • invokeMethod

      @NonNull public @NonNull eu.cloudnetservice.driver.network.rpc.RPC invokeMethod(@NonNull @NonNull String methodName, @NonNull @NonNull TypeDescriptor methodDesc, Object... args)
      Specified by:
      invokeMethod in interface eu.cloudnetservice.driver.network.rpc.RPCSender
    • invokeMethod

      @NonNull private @NonNull eu.cloudnetservice.driver.network.rpc.RPC invokeMethod(@NonNull @NonNull DefaultRPCMethodMetadata method, Object... args)
      Creates a new RPC to call the given target method with the given arguments.
      Parameters:
      method - the metadata of the method that should be called.
      args - the arguments of to supply to the target method.
      Returns:
      a new RPC instance targeting the given methods with the given arguments.
      Throws:
      NullPointerException - if the given method metadata or argument array is null.
      IllegalArgumentException - if the parameter count mismatches.