|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.mule.context.notification.ServerNotificationManager
public class ServerNotificationManager
A reworking of the event manager that allows efficient behaviour without global on/off switches in the config.
The configuration and resulting policy are separate; the policy is a summary of the configuration that contains information to decide whether a particular message can be handled, and which updates that with experience gained handling messages. When the configuration is changed the policy is rebuilt. In this way we get a fairly efficient system without needing controls elsewhere.
However, measurements showed that there was still a small impact on speed in some
cases. To improve behaviour further the
OptimisedNotificationHandler was
added. This allows a service that generates notifications to cache locally a handler
optimised for a particular class.
The dynamic flag stops this caching from occurring. This reduces efficiency slightly (about 15% cost on simple VM messages, less on other transports)
Note that, because of subclass relationships, we need to be very careful about exactly what is enabled and disabled:
| Field Summary | |
|---|---|
protected Log |
logger
|
static String |
NULL_SUBSCRIPTION
|
| Fields inherited from interface org.mule.api.lifecycle.Disposable |
|---|
PHASE_NAME |
| Constructor Summary | |
|---|---|
ServerNotificationManager()
|
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final String NULL_SUBSCRIPTION
protected Log logger
| Constructor Detail |
|---|
public ServerNotificationManager()
| Method Detail |
|---|
public boolean isNotificationDynamic()
isNotificationDynamic in interface ServerNotificationHandlerpublic void setMuleContext(MuleContext context)
setMuleContext in interface MuleContextAwarepublic void setNotificationDynamic(boolean dynamic)
public void start(WorkManager workManager,
javax.resource.spi.work.WorkListener workListener)
throws LifecycleException
LifecycleException
public void addInterfaceToType(Class<? extends ServerNotificationListener> iface,
Class<? extends ServerNotification> event)
public void setInterfaceToTypes(Map<Class<? extends ServerNotificationListener>,Set<Class<? extends ServerNotification>>> interfaceToEvents)
throws ClassNotFoundException
ClassNotFoundExceptionpublic void addListenerSubscriptionPair(ListenerSubscriptionPair pair)
public void addListener(ServerNotificationListener<?> listener)
public void addListenerSubscription(ServerNotificationListener<?> listener,
String subscription)
public void addAllListenerSubscriptionPairs(Collection<?> pairs)
@Deprecated public void setAllListenerSubscriptionPairs(Collection<?> pairs)
pairs - public void removeListener(ServerNotificationListener<?> listener)
public void removeAllListeners(Collection<ServerNotificationListener> listeners)
public void disableInterface(Class<? extends ServerNotificationListener> iface)
throws ClassNotFoundException
ClassNotFoundException
public void setDisabledInterfaces(Collection<Class<? extends ServerNotificationListener>> interfaces)
throws ClassNotFoundException
ClassNotFoundException
public void disableType(Class<? extends ServerNotification> type)
throws ClassNotFoundException
ClassNotFoundException
public void setDisabledTypes(Collection<Class<? extends ServerNotificationListener>> types)
throws ClassNotFoundException
ClassNotFoundExceptionpublic boolean isListenerRegistered(ServerNotificationListener listener)
isListenerRegistered in interface ServerNotificationHandlerpublic void fireNotification(ServerNotification notification)
fireNotification in interface ServerNotificationHandlerpublic boolean isNotificationEnabled(Class<? extends ServerNotification> type)
ServerNotificationHandler
isNotificationEnabled in interface ServerNotificationHandlertype - Either the notification class being generated or some superclass
public void dispose()
Disposable
dispose in interface Disposableprotected void notifyListeners(ServerNotification notification)
public void release()
release in interface javax.resource.spi.work.Workpublic void run()
run in interface Runnablepublic edu.emory.mathcs.backport.java.util.Queue getEventQueue()
public Map<Class<? extends ServerNotificationListener>,Set<Class<? extends ServerNotification>>> getInterfaceToTypes()
public Set<ListenerSubscriptionPair> getListeners()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||