Class InvocationArg

java.lang.Object
org.astonbitecode.j4rs.api.dtos.InvocationArg
All Implemented Interfaces:
Instance, JsonValue, ObjectValue

public class InvocationArg extends Object implements Instance
  • Field Details

    • CONTENTS_ARRAY

      public static final String CONTENTS_ARRAY
      The array contents should map to a List. This is in order to allow calls of type Arrays.asList(arg1, arg2, arg3, ...)
      See Also:
  • Constructor Details

  • Method Details

    • isSerialized

      public boolean isSerialized()
      If true, the argument is taken straight by the Java code as Object. If false, the argument is a json document that need to be deserialized to an Object.
      Returns:
      The The argFrom
    • getObjectClassName

      public String getObjectClassName()
      The type of this argument. This is used when json objects come from Rust, in order to be mapped to proper Java Objects.
      Specified by:
      getObjectClassName in interface ObjectValue
      Returns:
      The classname
    • getInstance

      public Instance getInstance()
    • getJson

      public String getJson()
      Description copied from interface: JsonValue
      Returns the json representation
      Specified by:
      getJson in interface JsonValue
      Returns:
      The json representation
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getObject

      public Object getObject()
      Description copied from interface: ObjectValue
      Returns the Object
      Specified by:
      getObject in interface ObjectValue
      Returns:
      An object instance
    • getObjectClass

      public Class<?> getObjectClass()
      Description copied from interface: ObjectValue
      Returns the Class of the Object
      Specified by:
      getObjectClass in interface ObjectValue
      Returns:
      A Class
    • invoke

      public Instance invoke(String methodName, InvocationArg... args)
      Description copied from interface: Instance
      Invokes a method of the instance of the class that is set for this Instance
      Specified by:
      invoke in interface Instance
      Parameters:
      methodName - The method name
      args - The arguments to use for invoking the method
      Returns:
      A Instance instance containing the result of the invocation
    • invokeStatic

      public Instance invokeStatic(String methodName, InvocationArg... args)
      Description copied from interface: Instance
      Invokes a static method of the class that is set for this Instance
      Specified by:
      invokeStatic in interface Instance
      Parameters:
      methodName - The static method name
      args - The arguments to use for invoking the static method
      Returns:
      A Instance instance containing the result of the invocation
    • invokeAsyncToChannel

      public void invokeAsyncToChannel(long channelAddress, String methodName, InvocationArg... args)
      Description copied from interface: Instance
      Invokes asynchronously a method of the instance of the class that is set for this Instance. The result of the invocation must be a Future. When the Future returned from the invocation completes, j4rs will invoke native Rust code to either send a success value or a failure.

      Please note that it is best that this function returns a CompletableFuture, as this improves performance. j4rs handles simple Futures with polling using an internal ScheduledExecutorService with one thread and this has apparent performance issues. You may have a look at J4rsPolledFuture for more details.

      Specified by:
      invokeAsyncToChannel in interface Instance
      Parameters:
      channelAddress - The address of the function pointer that will be used when the Future completes, in the native side, in order to actually perform the callback and complete a Future that is created in Rust and awaits for the Java Future to complete.
      methodName - The method name
      args - The arguments to use when invoking the callback method (the functionPointer)
    • invokeToChannel

      public void invokeToChannel(long channelAddress, String methodName, InvocationArg... args)
      Description copied from interface: Instance
      Invokes a method of the instance of the class that is set for this Instance. The result of the invocation should be provided later using the doCallback method of a NativeCallbackToRustChannelSupport class. Any possible returned objects from the actual synchronous invocation of the defined method will be dropped.
      Specified by:
      invokeToChannel in interface Instance
      Parameters:
      channelAddress - The memory address of the channel
      methodName - The method name
      args - The arguments
    • initializeCallbackChannel

      public void initializeCallbackChannel(long channelAddress)
      Description copied from interface: Instance
      Initialize a callback channel for this Instance. The channel can be used by Java to send values to Rust using the doCallback method of a NativeCallbackToRustChannelSupport class.
      Specified by:
      initializeCallbackChannel in interface Instance
      Parameters:
      channelAddress - The memory address of the channel
    • field

      public Instance field(String fieldName)
      Description copied from interface: Instance
      Retrieves the instance held under the Field fieldName
      Specified by:
      field in interface Instance
      Parameters:
      fieldName - The name of the field to retrieve
      Returns:
      A Instance instance containing the defined field.