org.activemath.events.impl
Class SimpleMulticaster

java.lang.Object
  extended by org.activemath.events.impl.SimpleMulticaster
All Implemented Interfaces:
EventListener, ActivemathEventListener, ActivemathEventMulticaster, ActivemathEventPublisher

public class SimpleMulticaster
extends Object
implements ActivemathEventMulticaster

Simple implementation of the ActivemathEventMulticaster interface.

Doesn't permit multiple instances of the same listener, as it keeps listeners in a HashSet.

Note that this class doesn't try to do anything clever to ensure thread safety if listeners are added or removed at runtime. A technique such as Copy-on-Write (Lea:137) could be used to ensure this, but the assumption in this version of this framework is that listeners will be added at application configuration time and not added or removed as the application runs.

All listeners are invoked in the calling thread. This allows the danger of a rogue listener blocking the entire application, but adds minimal overhead.

An alternative implementation could be more sophisticated in both these respects. This class is based on a class from an early version of the Spring Framework (http://www.springframework.org/), by Rod Johnson and Juergen Hoeller.


Constructor Summary
SimpleMulticaster()
           
 
Method Summary
 void addListener(ActivemathEventListener listener)
           
 void onActivemathEvent(ActivemathEvent event)
          Handle an Activemath event.
 void publishEvent(ActivemathEvent event)
          Publish an event.
 void removeAllListeners()
           
 void removeListener(ActivemathEventListener listener)
           
 void stop()
          signal thread to stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SimpleMulticaster

public SimpleMulticaster()
Method Detail

addListener

public void addListener(ActivemathEventListener listener)

removeListener

public void removeListener(ActivemathEventListener listener)

removeAllListeners

public void removeAllListeners()

publishEvent

public void publishEvent(ActivemathEvent event)
Description copied from interface: ActivemathEventPublisher
Publish an event.

Specified by:
publishEvent in interface ActivemathEventPublisher

onActivemathEvent

public void onActivemathEvent(ActivemathEvent event)
Description copied from interface: ActivemathEventListener
Handle an Activemath event.

This method must return as quickly as possible and must not block the calling thread for long.

Specified by:
onActivemathEvent in interface ActivemathEventListener
Parameters:
event - the event to respond to

stop

public void stop()
Description copied from interface: ActivemathEventMulticaster
signal thread to stop

Specified by:
stop in interface ActivemathEventMulticaster