Class CallableDecorator

    • Constructor Detail

      • CallableDecorator

        public CallableDecorator()
    • Method Detail

      • call

        public <V> V call​(Callable<V> callable)
                   throws Exception
        Used to decorate everything that executes in the channel as a result of a request from the other side, such as RPC executions on exported objects, user-provided Callable execution, pipe write, and so on.
        Throws:
        Exception
      • userRequest

        public <V,​T extends ThrowableCallable<V,​T> userRequest​(Callable<V,​T> op,
                                                                             Callable<V,​T> stem)
        Used to specifically decorate user-provided Callable execution. Unlike call(java.util.concurrent.Callable), this method provides an opportunity to inspect the actual Callable object given to Channel.call(Callable) from the other side, whereas call(java.util.concurrent.Callable) only provides an opaque blob that itself may wrap the actual user-given operations.
        Parameters:
        op - The original callable object given to Channel.call(Callable).
        stem - Computation that represents the invocation of op as well as any additional decoration done by other CallableDecorators.
        Returns:
        Returns the a decorated Callable that represents the decorated computation, which normally executes some pre-processing, then delegates to the stem, then performs some cleanup. If there's nothing to filter, return stem.
        Throws:
        RuntimeException - Any exception thrown from this method will be propagated to the other side as if the execution of the callable had failed with this exception.