Class AsyncMethod

  • All Implemented Interfaces:
    Invoke, java.io.Serializable, java.rmi.Remote

    public final class AsyncMethod
    extends java.lang.Object
    implements Invoke
    This class is used to asynchronously invoke methods on objects. Each time the invoke method is called, it spawns a one-use thread, to perform the method invocation. From the perspective of the caller, the method returns immediately. When the invocation is completed, it will callback the provided listening object; invoking a method of the identical name as the one invoked on the called object; passing a single object argument, which is either the resulting data of the invocation, if any, or the exception resulting from the invocation. Canonically the callback object should therfore define up to three methods; each having the name of the method called. One method accepting no arguments, one receiving the expected result object, and one accepting an Exception argument. The callback can be null, in which case the asynchronous invocation result will be silently discarded.

    This class can be used in either of two fundamentally different ways:

    • An instance can be constructed for a given called object, and its corresponding callback object, for repeated use.
    • The static invoke method can be used for infrequent combinations of called objects and callbacks.
    This class is intended for method invocations which require a significant amount of time to complete. It can also be remoted, which would open some considerably interesting possibilities. It could even be passed between virtual machines, that is really something to think about.
    Version:
    1.0, 22-Jan-06 Initial release
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      java.lang.Object callback
      This is the reference to the object, local or remote, which to call back asynchronously, when the invocation has completed.
      java.lang.Object item
      This is the reference to the object, usually remote, on which to invoke asynchronously.
      private static long serialVersionUID  
    • Constructor Summary

      Constructors 
      Constructor Description
      AsyncMethod​(java.lang.Object item, java.lang.Object callback)
      The constructor takes any object, and allows its methods to be invoked asynchronously; then calls back the listening object, with the result of the invocation.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static void invoke​(java.lang.Object item, java.lang.String method, java.lang.Object args, java.lang.Object callback)
      This method invokes the method specified, on the object specified, with the argument(s) specified, if any, asynchronously.
      java.lang.Object invoke​(java.lang.String method, java.lang.Object args)
      This method invokes the method specified, with the argument(s) specified, if any, asynchronously.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • item

        public final java.lang.Object item
        This is the reference to the object, usually remote, on which to invoke asynchronously. It works on local objects as well.
      • callback

        public final java.lang.Object callback
        This is the reference to the object, local or remote, which to call back asynchronously, when the invocation has completed. (if non-null)
    • Constructor Detail

      • AsyncMethod

        public AsyncMethod​(java.lang.Object item,
                           java.lang.Object callback)
        The constructor takes any object, and allows its methods to be invoked asynchronously; then calls back the listening object, with the result of the invocation.
        Parameters:
        item - The object to make asynchronously callable. It may be an any arbitrary object, of any type, local or remote.
        callback - The object to asynchronously call back, on the completion of the asynchronous method call. It may be any arbitrary object, of any type, local or remote. If the argument is null, the asynchronous invocations result will silently be silently discarded.
    • Method Detail

      • invoke

        public java.lang.Object invoke​(java.lang.String method,
                                       java.lang.Object args)
        This method invokes the method specified, with the argument(s) specified, if any, asynchronously.
        Specified by:
        invoke in interface Invoke
        Parameters:
        method - The name of the method of the member object to be invoked asynchronously.
        args - The argument, or arguments, to be provided to the method. The paramater can be null, if the method takes none, or it can be an array of objects, if the method takes several. In actuality, this method simply invokes the static invoke method of this class, providing its local item and callback objects, to centralise the asynchronous invocation processing.
        Returns:
        null No return is provided, it is required to fulfill the Invoke interface.
      • invoke

        public static void invoke​(java.lang.Object item,
                                  java.lang.String method,
                                  java.lang.Object args,
                                  java.lang.Object callback)
        This method invokes the method specified, on the object specified, with the argument(s) specified, if any, asynchronously. It then calls the callback object specified, if any.
        Parameters:
        item - The object on which to invoke the method asynchronously. It may be any arbitrary object, of any type, local or remote.
        method - The name of the method on the called object to be invoked asynchronously.
        args - The argument, or arguments, to be provided to the method. The paramater can be null, if the method takes none, or it can be an array of objects, when the method takes several.
        callback - The object to asynchronously call back, on the completion of the asynchronous method call. It may be any arbitrary object, of any type, local or remote. If the argument is null, the invocation result will be silently discarded.