Package eu.bandm.tools.message
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 Summary
Modifier and TypeFieldDescriptionprotected boolean
Whether a null value coming from the function means not to send anything.Evident.Fields inherited from class eu.bandm.tools.message.SingleSender
receiver
-
Constructor Summary
ConstructorDescriptionMessageMapper
(Function<? super M, ? extends N> fun) Will apply the specified total function to each received message.MessageMapper
(Function<? super M, ? extends N> fun, boolean p) Will apply the specified function to each received message and forward it to a receiver.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. -
Method Summary
Modifier and TypeMethodDescriptionstatic <M extends Message,
N extends Message>
Function<MessageReceiver<N>, MessageReceiver<M>> Delivers a function which applied to a message receiver for type "N" will deliver a message receiver for type "M".void
Apply the functionfun
and send its result to the curent drainSingleSender.receiver
.protected void
setAllowPartialFunctions
(boolean b) Evident.Methods inherited from class eu.bandm.tools.message.SingleSender
getReceiver, send, setReceiver
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface eu.bandm.tools.message.MessageReceiver
ifSubcriticalThen, ifSubcriticalThen, ifSubcriticalThenElse
-
Field Details
-
fun
Evident. -
allowPartialFunctions
protected boolean allowPartialFunctionsWhether a null value coming from the function means not to send anything. Otherwise, it is an error.
-
-
Constructor Details
-
MessageMapper
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
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
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
Apply the functionfun
and send its result to the curent drainSingleSender.receiver
.- Specified by:
receive
in interfaceMessageReceiver<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 receiverN
- 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.
-