org.apache.felix.eventadmin.impl
Class EventAdminImpl

java.lang.Object
  extended by org.apache.felix.eventadmin.impl.EventAdminImpl
All Implemented Interfaces:
EventAdmin

public class EventAdminImpl
extends Object
implements EventAdmin

This is the actual implementation of the OSGi R4 Event Admin Service (see the Compendium 113 for details). The implementation uses a HandlerTasks in order to determine applicable EventHandler for a specific event and subsequently dispatches the event to the handlers via DeliverTasks. To do this, it uses two different DeliverTasks one for asynchronous and one for synchronous event delivery depending on whether its post() or its send() method is called. Note that the actual work is done in the implementations of the DeliverTasks. Additionally, a stop method is provided that prevents subsequent events to be delivered.

Author:
Felix Project Team

Constructor Summary
EventAdminImpl(HandlerTasks managers, DefaultThreadPool syncPool, DefaultThreadPool asyncPool, int timeout, String[] ignoreTimeout)
          The constructor of the EventAdmin implementation.
 
Method Summary
 void postEvent(Event event)
          Post an asynchronous event.
 void sendEvent(Event event)
          Send a synchronous event.
 void stop()
          This method can be used to stop the delivery of events.
 void update(HandlerTasks managers, int timeout, String[] ignoreTimeout)
          Update the event admin with new configuration.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EventAdminImpl

public EventAdminImpl(HandlerTasks managers,
                      DefaultThreadPool syncPool,
                      DefaultThreadPool asyncPool,
                      int timeout,
                      String[] ignoreTimeout)
The constructor of the EventAdmin implementation. The HandlerTasks factory is used to determine applicable EventHandler for a given event. Additionally, the two DeliverTasks are used to dispatch the event.

Parameters:
managers - The factory used to determine applicable EventHandler
syncPool - The synchronous thread pool
asyncPool - The asynchronous thread pool
Method Detail

postEvent

public void postEvent(Event event)
Post an asynchronous event.

Specified by:
postEvent in interface EventAdmin
Parameters:
event - The event to be posted by this service
Throws:
IllegalStateException - - In case we are stopped
See Also:
EventAdmin.postEvent(org.osgi.service.event.Event)

sendEvent

public void sendEvent(Event event)
Send a synchronous event.

Specified by:
sendEvent in interface EventAdmin
Parameters:
event - The event to be send by this service
Throws:
IllegalStateException - - In case we are stopped
See Also:
EventAdmin.sendEvent(org.osgi.service.event.Event)

stop

public void stop()
This method can be used to stop the delivery of events. The m_managers is replaced with a null object that throws an IllegalStateException on a call to createHandlerTasks().


update

public void update(HandlerTasks managers,
                   int timeout,
                   String[] ignoreTimeout)
Update the event admin with new configuration.



Copyright © 2011 Apache Software Foundation. All Rights Reserved.