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 and forward it to a receiver.
      Parameters:
      fun - the function to apply to all received messages.
      p - whether partial functions returning null are allowed.
      drain - the receiver to which the function results are propagated.
    • MessageMapper

      public MessageMapper(Function<? super M,? extends N> fun, boolean p)
      Will apply the specified function to each received message and forward it to a receiver.
      Parameters:
      fun - the function to apply to all received messages.
      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. Partial functions returning null are not allowed.
      Parameters:
      fun - the function to apply to all received messages.
  • Method Details

    • setAllowPartialFunctions

      protected void setAllowPartialFunctions(boolean b)
      Evident.
      Parameters:
      b - the new value of this flag.
    • 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>
      Parameters:
      message - the message to process and propagate.
    • lift

      public static <M extends Message, N extends Message> Function<MessageReceiver<N>,MessageReceiver<M>> lift(Function<M,? extends N> f)
      Delivers a function which applied to a message receiver for type "N" will deliver a message receiver for type "M". A function must be given which maps the messages the other way round.
      Type Parameters:
      M - the message type for the resulting receiver
      N - the message type for the receiver as the function argument.
      Parameters:
      f - function which maps messages compatible with the resulting receiver to those compatible with the argument receiver.
      Returns:
      the function to produce modified message receivers.