Class EventManager<T>
- java.lang.Object
-
- de.bsvrz.dav.daf.main.impl.notification.EventManager<T>
-
public class EventManager<T> extends java.lang.ObjectDiese Klasse verwaltet eine Menge von Event-Listenern von Typ T, bei denen zwischen internen und öffentlichen/asynchronen Listenern unterschieden wird. Wenn ein Ereignis ausgelöst wird, werden interne Listener im selben Thread ausgelöst der mitpostEvent(Consumer)die Benachrichtigung auslöst. Asynchrone EventListener werden imDafMainEventThreadasynchron benachrichtigt, sodass der auslösende Thread nicht blockiert werden kann.- Interne Eventlistener sollten keine blockierenden Aktionen durchführen.
- Externe Eventlistener werden u. U. erst verzögert ausgelöst, blockieren aber nicht die ausführung von internen Benachrichtungen. Sie blockieren sich aber ggf. gegenseitig.
-
-
Constructor Summary
Constructors Constructor Description EventManager()Erstellt einen neuen EventManager ohne eigenen Dispatch-Thread.EventManager(DafMainEventThread notificationThread)Erstellt einen neuen EventManager mit Dispatch-Thread.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAsyncNotificationListener(T listener)Fügt einen Listener hinzu, der die Event-Benachrichtigung asynchron erhält.voidaddInternalNotificationListener(T listener)Fügt einen Listener hinzu, der die Event-Benachrichtigung synchron erhält.booleanisEmpty()Gibttruezurück, wenn es keine EventListener gibt.voidpostEvent(java.util.function.Consumer<T> eventGenerator)Veröffentlicht ein Ereignis.booleanremoveAsyncNotificationListener(T listener)Entfernt einen asynchronen Listener.booleanremoveInternalNotificationListener(T listener)Entfernt einen synchronen Listener.
-
-
-
Constructor Detail
-
EventManager
public EventManager()
Erstellt einen neuen EventManager ohne eigenen Dispatch-Thread. Asnychrone Events werden dann gff. jedesmal in einem neuen Thread publiziert.
-
EventManager
public EventManager(DafMainEventThread notificationThread)
Erstellt einen neuen EventManager mit Dispatch-Thread.- Parameters:
notificationThread- Event-Thread
-
-
Method Detail
-
addAsyncNotificationListener
public void addAsyncNotificationListener(T listener)
Fügt einen Listener hinzu, der die Event-Benachrichtigung asynchron erhält.- Parameters:
listener- Listener
-
removeAsyncNotificationListener
public boolean removeAsyncNotificationListener(T listener)
Entfernt einen asynchronen Listener.- Parameters:
listener- zu entfernender Listener- Returns:
truewenn entfernt,falsefalls nicht vorhanden.
-
addInternalNotificationListener
public void addInternalNotificationListener(T listener)
Fügt einen Listener hinzu, der die Event-Benachrichtigung synchron erhält.- Parameters:
listener- Listener
-
removeInternalNotificationListener
public boolean removeInternalNotificationListener(T listener)
Entfernt einen synchronen Listener.- Parameters:
listener- zu entfernender Listener- Returns:
truewenn entfernt,falsefalls nicht vorhanden.
-
postEvent
public void postEvent(java.util.function.Consumer<T> eventGenerator)
Veröffentlicht ein Ereignis. Als Parameter wird ein Lambda übergeben, der auf einem Listener von Typ T das Ereignis auslöst.Diese Methode veröffentlicht zuerst das Ereignis auf den internen Listenern im selben Thread und dann auf den externen Listenern im notificationThread.
- Parameters:
eventGenerator- Ereignis-Generator
-
isEmpty
public boolean isEmpty()
Gibttruezurück, wenn es keine EventListener gibt.- Returns:
true, wenn es keine EventListener gibt, sonstfalse
-
-