net.metanotion.util.observers
Class ConcurrentMessageBusManager<M extends Message>

java.lang.Object
  extended by net.metanotion.util.observers.ConcurrentMessageBusManager<M>
All Implemented Interfaces:
java.lang.Runnable, MessageBusManager<M>

public final class ConcurrentMessageBusManager<M extends Message>
extends java.lang.Object
implements MessageBusManager<M>, java.lang.Runnable

An MessageBusManager that uses an ExecutorService for concurrent, asynchronous dispatching of events.


Constructor Summary
ConcurrentMessageBusManager(java.util.concurrent.ExecutorService es)
           
 
Method Summary
 boolean add(Observer observer, java.lang.Object channel)
          Register an Observer as a listener.
 void closeChannel(java.lang.Object channel)
          Close a channel created by openChannel.
 void openChannel(java.lang.Object channel)
          Create a channel to send messages on.
 boolean remove(Observer observer, java.lang.Object channel)
          Remove an Observer as a listener.
 void run()
           
 boolean send(M m, java.lang.Object c)
          Broadcast a message to all registered observers.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConcurrentMessageBusManager

public ConcurrentMessageBusManager(java.util.concurrent.ExecutorService es)
Parameters:
es - Thread pool to submit concurrent processing requests to.
Method Detail

openChannel

public void openChannel(java.lang.Object channel)
Description copied from interface: MessageBusManager
Create a channel to send messages on.

Specified by:
openChannel in interface MessageBusManager<M extends Message>
Parameters:
channel - Object which identifies the channel others will use to send messages on.

closeChannel

public void closeChannel(java.lang.Object channel)
Description copied from interface: MessageBusManager
Close a channel created by openChannel. This also will remove all observers listening on that channel.

Specified by:
closeChannel in interface MessageBusManager<M extends Message>
Parameters:
channel - Object which identifies the channel others will use to send messages on.

add

public boolean add(Observer observer,
                   java.lang.Object channel)
Description copied from interface: MessageBusManager
Register an Observer as a listener.

Specified by:
add in interface MessageBusManager<M extends Message>
Parameters:
observer - Observer to start receiving messages.
channel - The channel the observer is listening on.
Returns:
True if the observer was successfully registered, false otherwise.

remove

public boolean remove(Observer observer,
                      java.lang.Object channel)
Description copied from interface: MessageBusManager
Remove an Observer as a listener.

Specified by:
remove in interface MessageBusManager<M extends Message>
Parameters:
observer - Observer to remove
channel - The channel the observer is listening on.
Returns:
True if the observer was successfully removed, false otherwise.

send

public boolean send(M m,
                    java.lang.Object c)
Description copied from interface: MessageBusManager
Broadcast a message to all registered observers.

Specified by:
send in interface MessageBusManager<M extends Message>
Parameters:
m - Message to send to observers.
c - Channel to send the message on.
Returns:
True if the message was queued, false otherwise

run

public void run()
Specified by:
run in interface java.lang.Runnable