Class MessageMapper<M extends Message,N extends Message>

java.lang.Object
eu.bandm.tools.message.SingleSender<N>
eu.bandm.tools.message.MessageMapper<M,N>
All Implemented Interfaces:
MessageReceiver<M>

public class MessageMapper<M extends Message,N extends Message> extends SingleSender<N> implements MessageReceiver<M>
A message receiver which receives a message of one type, and propagates the result of applying a function to this message, which may be of different type.
  • Field Details

    • fun

      protected final Function<? super M extends Message,? extends N extends Message> fun
      Evident.
    • allowPartialFunctions

      protected boolean allowPartialFunctions
      Whether a null value coming from the function means not to send anything. Otherwise, it is an error.
  • Constructor Details

    • MessageMapper

      public MessageMapper(Function<? super M,? extends N> fun, boolean p, MessageReceiver<N> drain)
      Will apply the specified function to each received message.
      Parameters:
      p - whether partial functions returning null are allowed
    • MessageMapper

      public MessageMapper(Function<? super M,? extends N> fun, boolean p)
      Will apply the specified function to each received message.
      Parameters:
      p - whether partial functions returning null are allowed
    • MessageMapper

      public MessageMapper(Function<? super M,? extends N> fun)
      Will apply the specified total function to each received message.
  • Method Details

    • setAllowPartialFunctions

      protected void setAllowPartialFunctions(boolean b)
      Evident
    • receive

      public void receive(M message)
      Apply the function fun and send its result to the curent drain SingleSender.receiver.
      Specified by:
      receive in interface MessageReceiver<M extends Message>
    • lift

      public static <M extends Message, N extends Message> Function<MessageReceiver<N>,MessageReceiver<M>> lift(Function<M,? extends N> f)
      Delivers a function to apply on a message receiver for type "N" to get a message receiver for type "M", when a function is given which maps the messages the other way round.