Class FSMStateFunctionBuilder<S,D>

java.lang.Object
org.apache.pekko.japi.pf.FSMStateFunctionBuilder<S,D>
Type Parameters:
S - the state type
D - the data type

public class FSMStateFunctionBuilder<S,D> extends Object
  • Constructor Details

    • FSMStateFunctionBuilder

      public FSMStateFunctionBuilder()
  • Method Details

    • event

      public final <P, Q> FSMStateFunctionBuilder<S,D> event(Class<P> eventType, Class<Q> dataType, Predicate2<P,Q> predicate, Function2<P,Q,FSM.State<S,D>> apply)
      Add a case statement that matches on an event and data type and a predicate.
      Type Parameters:
      P - the event type to match on
      Q - the data type to match on
      Parameters:
      eventType - the event type to match on
      dataType - the data type to match on
      predicate - a predicate to evaluate on the matched types
      apply - an action to apply to the event and state data if there is a match
      Returns:
      the builder with the case statement added
    • event

      public <P, Q> FSMStateFunctionBuilder<S,D> event(Class<P> eventType, Class<Q> dataType, Function2<P,Q,FSM.State<S,D>> apply)
      Add a case statement that matches on an event and data type.
      Type Parameters:
      P - the event type to match on
      Q - the data type to match on
      Parameters:
      eventType - the event type to match on
      dataType - the data type to match on
      apply - an action to apply to the event and state data if there is a match
      Returns:
      the builder with the case statement added
    • event

      public <P> FSMStateFunctionBuilder<S,D> event(Class<P> eventType, Predicate2<P,D> predicate, Function2<P,D,FSM.State<S,D>> apply)
      Add a case statement that matches if the event type and predicate matches.
      Parameters:
      eventType - the event type to match on
      predicate - a predicate that will be evaluated on the data and the event
      apply - an action to apply to the event and state data if there is a match
      Returns:
      the builder with the case statement added
    • event

      public <P> FSMStateFunctionBuilder<S,D> event(Class<P> eventType, Function2<P,D,FSM.State<S,D>> apply)
      Add a case statement that matches if the event type and predicate matches.
      Parameters:
      eventType - the event type to match on
      apply - an action to apply to the event and state data if there is a match
      Returns:
      the builder with the case statement added
    • event

      public FSMStateFunctionBuilder<S,D> event(Predicate2<Object,D> predicate, Function2<Object,D,FSM.State<S,D>> apply)
      Add a case statement that matches if the predicate matches.
      Parameters:
      predicate - a predicate that will be evaluated on the data and the event
      apply - an action to apply to the event and state data if there is a match
      Returns:
      the builder with the case statement added
    • event

      public <Q> FSMStateFunctionBuilder<S,D> event(List<Object> eventMatches, Class<Q> dataType, Function2<Object,Q,FSM.State<S,D>> apply)
      Add a case statement that matches on the data type and if any of the event types in the list match or any of the event instances in the list compares equal.
      Type Parameters:
      Q - the data type to match on
      Parameters:
      eventMatches - a list of types or instances to match against
      dataType - the data type to match on
      apply - an action to apply to the event and state data if there is a match
      Returns:
      the builder with the case statement added
    • event

      public FSMStateFunctionBuilder<S,D> event(List<Object> eventMatches, Function2<Object,D,FSM.State<S,D>> apply)
      Add a case statement that matches if any of the event types in the list match or any of the event instances in the list compares equal.
      Parameters:
      eventMatches - a list of types or instances to match against
      apply - an action to apply to the event and state data if there is a match
      Returns:
      the builder with the case statement added
    • eventEquals

      public <P, Q> FSMStateFunctionBuilder<S,D> eventEquals(P event, Class<Q> dataType, Function2<P,Q,FSM.State<S,D>> apply)
      Add a case statement that matches on the data type and if the event compares equal.
      Type Parameters:
      Q - the data type to match on
      Parameters:
      event - an event to compare equal against
      dataType - the data type to match on
      apply - an action to apply to the event and state data if there is a match
      Returns:
      the builder with the case statement added
    • eventEquals

      public <P> FSMStateFunctionBuilder<S,D> eventEquals(P event, Function2<P,D,FSM.State<S,D>> apply)
      Add a case statement that matches if event compares equal.
      Parameters:
      event - an event to compare equal against
      apply - an action to apply to the event and state data if there is a match
      Returns:
      the builder with the case statement added
    • anyEvent

      public FSMStateFunctionBuilder<S,D> anyEvent(Function2<Object,D,FSM.State<S,D>> apply)
      Add a case statement that matches on any type of event.
      Parameters:
      apply - an action to apply to the event and state data
      Returns:
      the builder with the case statement added
    • build

      public scala.PartialFunction<FSM.Event<D>,FSM.State<S,D>> build()
      Build a PartialFunction from this builder. After this call the builder will be reset.
      Returns:
      a PartialFunction for this builder.