org.robokind.api.messaging
Class DefaultMessageBlockingReceiver<Msg,Rec>

java.lang.Object
  extended by org.robokind.api.messaging.DefaultMessageBlockingReceiver<Msg,Rec>
Type Parameters:
Msg - type of message to return
Rec - type of record to receive
All Implemented Interfaces:
org.jflux.api.core.Source<Msg>, MessageBlockingReceiver<Msg>

public class DefaultMessageBlockingReceiver<Msg,Rec>
extends Object
implements MessageBlockingReceiver<Msg>

Default implementation of the MessageBlockingReceiver. Blocks until a Record is received. Uses an Adapter to adapt Records to Messages and notifies Listeners.

Author:
Matthew Stevenson

Field Summary
 
Fields inherited from interface org.robokind.api.messaging.MessageBlockingReceiver
DEFAULT_TIMEOUT_LENGTH
 
Constructor Summary
DefaultMessageBlockingReceiver()
          Creates an empty DefaultMessageBlockingReceiver.
DefaultMessageBlockingReceiver(long timeout)
          Creates an empty DefaultMessageBlockingReceiver.
 
Method Summary
 void addMessageListener(org.jflux.api.core.Listener<Msg> listener)
          Adds a Listener to be notified when a Message has been received.
 int clearMessages()
          Removes any pending messages for this receiver.
protected  void fireMessageEvent(Msg message)
          Notifies listeners of a Message
 long getTimeout()
           
 Msg getValue()
          Blocks while waiting for a Message.
 void removeMessageListener(org.jflux.api.core.Listener<Msg> listener)
          Removes a Listener from being notified.
 void setAdapter(org.jflux.api.core.Adapter<Rec,Msg> adapter)
          Sets the Adapter used to convert Records to Messages.
 void setRecordReceiver(RecordBlockingReceiver<Rec> receiver)
          Sets the RecordAsyncReceiver used to receive Records.
 void setTimeout(long timeout)
           
 void start()
          Initializes and connects the MessageAsyncReceiver, and begins receiving Messages.
 void stop()
          Stops the MessageAsyncReceiver, making it unable to receive Messages.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultMessageBlockingReceiver

public DefaultMessageBlockingReceiver()
Creates an empty DefaultMessageBlockingReceiver.


DefaultMessageBlockingReceiver

public DefaultMessageBlockingReceiver(long timeout)
Creates an empty DefaultMessageBlockingReceiver.

Parameters:
timeout - timeout length for receiving messages
Method Detail

setRecordReceiver

public void setRecordReceiver(RecordBlockingReceiver<Rec> receiver)
Sets the RecordAsyncReceiver used to receive Records.

Parameters:
service - theRecordReceiver to set

setAdapter

public void setAdapter(org.jflux.api.core.Adapter<Rec,Msg> adapter)
Sets the Adapter used to convert Records to Messages.

Parameters:
adapter - the Adapter to set

setTimeout

public void setTimeout(long timeout)
Specified by:
setTimeout in interface MessageBlockingReceiver<Msg>

getTimeout

public long getTimeout()
Specified by:
getTimeout in interface MessageBlockingReceiver<Msg>

start

public void start()
Description copied from interface: MessageBlockingReceiver
Initializes and connects the MessageAsyncReceiver, and begins receiving Messages.

Specified by:
start in interface MessageBlockingReceiver<Msg>

stop

public void stop()
Description copied from interface: MessageBlockingReceiver
Stops the MessageAsyncReceiver, making it unable to receive Messages.

Specified by:
stop in interface MessageBlockingReceiver<Msg>

getValue

public Msg getValue()
Description copied from interface: MessageBlockingReceiver
Blocks while waiting for a Message.

Specified by:
getValue in interface org.jflux.api.core.Source<Msg>
Specified by:
getValue in interface MessageBlockingReceiver<Msg>
Returns:
Message received from a MessageSender, null if no Message received before timeout

fireMessageEvent

protected void fireMessageEvent(Msg message)
Notifies listeners of a Message

Parameters:
message -

clearMessages

public int clearMessages()
Description copied from interface: MessageBlockingReceiver
Removes any pending messages for this receiver. Returns the number of messages cleared.

Specified by:
clearMessages in interface MessageBlockingReceiver<Msg>
Returns:
number of messages cleared

addMessageListener

public void addMessageListener(org.jflux.api.core.Listener<Msg> listener)
Description copied from interface: MessageBlockingReceiver
Adds a Listener to be notified when a Message has been received.

Specified by:
addMessageListener in interface MessageBlockingReceiver<Msg>
Parameters:
listener - the Listener to be notified

removeMessageListener

public void removeMessageListener(org.jflux.api.core.Listener<Msg> listener)
Description copied from interface: MessageBlockingReceiver
Removes a Listener from being notified.

Specified by:
removeMessageListener in interface MessageBlockingReceiver<Msg>
Parameters:
listener - the Listener to remove


Copyright © 2011-2013. All Rights Reserved.