Class ReceiveBuilder<T>

  • Type Parameters:
    T - the common superclass of all supported messages.

    public final class ReceiveBuilder<T>
    extends java.lang.Object
    Mutable builder used when implementing AbstractBehavior.

    When handling a message or signal, this Behavior will consider all handlers in the order they were added, looking for the first handler for which both the type and the (optional) predicate match.

    • Constructor Detail

      • ReceiveBuilder

        public ReceiveBuilder()
    • Method Detail

      • create

        public static <T> ReceiveBuilder<T> create()
        Create a new mutable receive builder
      • onMessage

        public <M extends TReceiveBuilder<T> onMessage​(java.lang.Class<M> type,
                                                         Function<M,​Behavior<T>> handler)
        Add a new case to the message handling.

        Parameters:
        type - type of message to match
        handler - action to apply if the type matches
        Returns:
        this behavior builder
      • onMessage

        public <M extends TReceiveBuilder<T> onMessage​(java.lang.Class<M> type,
                                                         Predicate<M> test,
                                                         Function<M,​Behavior<T>> handler)
        Add a new predicated case to the message handling.

        Parameters:
        type - type of message to match
        test - a predicate that will be evaluated on the argument if the type matches
        handler - action to apply if the type matches and the predicate returns true
        Returns:
        this behavior builder
      • onMessageUnchecked

        public <M extends TReceiveBuilder<T> onMessageUnchecked​(java.lang.Class<? extends T> type,
                                                                  Function<M,​Behavior<T>> handler)
        Add a new case to the message handling without compile time type check.

        Should normally not be used, but when matching on class with generic type argument it can be useful, e.g. List.class and (List&lt;String&gt; list) -> {...}

        Parameters:
        type - type of message to match
        handler - action to apply when the type matches
        Returns:
        this behavior builder
      • onMessageEquals

        public ReceiveBuilder<T> onMessageEquals​(T msg,
                                                 Creator<Behavior<T>> handler)
        Add a new case to the message handling matching equal messages.

        Parameters:
        msg - the message to compare to
        handler - action to apply when the message matches
        Returns:
        this behavior builder
      • onAnyMessage

        public ReceiveBuilder<T> onAnyMessage​(Function<T,​Behavior<T>> handler)
        Add a new case to the message handling matching any message. Subsequent onMessage clauses will never see any messages.

        Parameters:
        handler - action to apply for any message
        Returns:
        this behavior builder
      • onSignal

        public <M extends SignalReceiveBuilder<T> onSignal​(java.lang.Class<M> type,
                                                             Function<M,​Behavior<T>> handler)
        Add a new case to the signal handling.

        Parameters:
        type - type of signal to match
        handler - action to apply if the type matches
        Returns:
        this behavior builder
      • onSignal

        public <M extends SignalReceiveBuilder<T> onSignal​(java.lang.Class<M> type,
                                                             Predicate<M> test,
                                                             Function<M,​Behavior<T>> handler)
        Add a new predicated case to the signal handling.

        Parameters:
        type - type of signals to match
        test - a predicate that will be evaluated on the argument if the type matches
        handler - action to apply if the type matches and the predicate returns true
        Returns:
        this behavior builder
      • onSignalEquals

        public ReceiveBuilder<T> onSignalEquals​(Signal signal,
                                                Creator<Behavior<T>> handler)
        Add a new case to the signal handling matching equal signals.

        Parameters:
        signal - the signal to compare to
        handler - action to apply when the message matches
        Returns:
        this behavior builder