Modifier and Type | Class and Description |
---|---|
private class |
DelayedTrigger.AsyncTriggerThreadRunnable
Runnable mit der run-Methode, die in einem eigenen Thread ausgeführt wird und die TriggerTargets asynchron benachrichtigt.
|
Modifier and Type | Field and Description |
---|---|
private boolean |
_closed
true , wenn die close-Methode aufgerufen wurde; sonst false . |
private long |
_delayDuration
Verzögerungszeit in der nach einem Trigger-Aufrufe auf weitere Trigger-Aufrufe gewartet wird, bevor die sofortige Auslösung angestoßen wird.
|
private int |
_delayedTriggerCount
Aktuelle Anzahl der Trigger-Aufrufe.
|
private long |
_maximumDelayDuration
Maximale Verzögerungszeit in der nach dem jeweils ersten Trigger-Aufruf auf weitere Trigger-Aufrufe gewartet wird, bevor die sofortige Auslösung angestoßen wird.
|
private int |
_maximumDelayedTriggerCount
Anzahl der Trigger-Aufrufe, nach der die sofortige Auslösung angestoßen wird.
|
private long |
_maximumTriggeringTime
Zeitpunkt an dem die sofortige Auslösung angestoßen wird.
|
private long |
_triggeringTime
Zeitpunkt an dem die sofortige Auslösung angestoßen wird, wenn nicht vorher ein weiterer Trigger-Aufruf stattfindet.
|
private java.util.List<TriggerTarget> |
_triggerTargets
Listener, die beim Auslösen und Schließen des Triggers benachrichtigt werden sollen.
|
Constructor and Description |
---|
DelayedTrigger(java.lang.String threadName,
int maximumDelayedTriggerCount,
long delayDuration,
long maximumDelayDuration)
Erzeugt ein neues Triggerobjekt mit den angegebenen Eigenschaften
|
Modifier and Type | Method and Description |
---|---|
void |
addTriggerTarget(TriggerTarget triggerTarget)
Fügt dem Trigger ein neues TriggerTarget, das beim Auslösen und Schließen des Triggers benachrichtigt werden soll, hinzu.
|
private boolean |
awaitTrigger()
Wartet bis der Trigger ausgelöst werden soll oder der Trigger geschlossen wurde.
|
void |
close()
Schließt den Trigger.
|
private void |
closeTriggerTargets()
Benachrichtigt alle TriggerTargets über das Auslösen des Triggers
|
void |
removeTriggerTarget(TriggerTarget triggerTarget)
Entfernt ein vorher hinzugefügtes TriggerTarget.
|
void |
shoot()
Führt zu einer sofortigen Auslösung des Triggers mit einer asynchronen Benachrichtigung aller angemeldeten TriggerTargets
|
private void |
shootTriggerTargets()
Benachrichtigt alle TriggerTargets über das Auslösen des Triggers
|
void |
trigger()
Führt zu einer verzögerten Auslösung des Triggers mit einer asynchronen Benachrichtigung aller angemeldeten TriggerTargets
|
private final java.util.List<TriggerTarget> _triggerTargets
Listener, die beim Auslösen und Schließen des Triggers benachrichtigt werden sollen.
private int _maximumDelayedTriggerCount
Anzahl der Trigger-Aufrufe, nach der die sofortige Auslösung angestoßen wird.
private int _delayedTriggerCount
Aktuelle Anzahl der Trigger-Aufrufe.
private long _delayDuration
Verzögerungszeit in der nach einem Trigger-Aufrufe auf weitere Trigger-Aufrufe gewartet wird, bevor die sofortige Auslösung angestoßen wird.
private long _triggeringTime
Zeitpunkt an dem die sofortige Auslösung angestoßen wird, wenn nicht vorher ein weiterer Trigger-Aufruf stattfindet. Mit jedem neuen Trigger-Aufruf wird dieses Feld auf die aktuelle Zeit plus _delayDuration
gesetzt.
private long _maximumDelayDuration
Maximale Verzögerungszeit in der nach dem jeweils ersten Trigger-Aufruf auf weitere Trigger-Aufrufe gewartet wird, bevor die sofortige Auslösung angestoßen wird.
private long _maximumTriggeringTime
Zeitpunkt an dem die sofortige Auslösung angestoßen wird. Mit dem jeweils ersten verzögerten Anstoß wird dieses Feld auf die aktuelle Zeit plus _maximumDelayDuration
gesetzt.
private boolean _closed
true
, wenn die close-Methode aufgerufen wurde; sonst false
.
public DelayedTrigger(java.lang.String threadName, int maximumDelayedTriggerCount, long delayDuration, long maximumDelayDuration)
Erzeugt ein neues Triggerobjekt mit den angegebenen Eigenschaften
threadName
- Name des Threads für die asynchrone Auslösung des Triggers.maximumDelayedTriggerCount
- Anzahl der Trigger-Aufrufe, nach der die sofortige Auslösung angestoßen wird.delayDuration
- Verzögerungszeit in der nach einem Trigger-Aufrufe auf weitere Trigger-Aufrufe gewartet wird, bevor die sofortige Auslösung angestoßen wird.maximumDelayDuration
- Maximale Verzögerungszeit in der nach dem jeweils ersten Trigger-Aufruf auf weitere Trigger-Aufrufe gewartet wird, bevor die sofortige Auslösung angestoßen wird.public void trigger()
Führt zu einer verzögerten Auslösung des Triggers mit einer asynchronen Benachrichtigung aller angemeldeten TriggerTargets
public void shoot()
Führt zu einer sofortigen Auslösung des Triggers mit einer asynchronen Benachrichtigung aller angemeldeten TriggerTargets
public void close()
Schließt den Trigger. Die sofortige Auslösung des Triggers wird angestoßen, falls vorherige verzögerte Trigger-Aufrufe noch nicht zu einer Auslösung des Triggers geführt haben. Alle angemeldeten TriggerTargets werden anschließend über das Schließen des Triggers benachrichtigt. Der Thread zur asynchronen Benachrichtigung der TriggerTargets wird beendet.
private boolean awaitTrigger() throws java.lang.InterruptedException
Wartet bis der Trigger ausgelöst werden soll oder der Trigger geschlossen wurde.
false
, wenn der Trigger ausgelöst werden kann; true
, wenn der Trigger geschlossen wurde.java.lang.InterruptedException
- Wenn der Thread vor oder während des Wartens unterbrochen wurde.public void addTriggerTarget(TriggerTarget triggerTarget)
Trigger
Fügt dem Trigger ein neues TriggerTarget, das beim Auslösen und Schließen des Triggers benachrichtigt werden soll, hinzu.
addTriggerTarget
in interface Trigger
triggerTarget
- Listener-Objekt, das zukünftig beim Auslösen oder Schließen des Triggers benachrichtigt werden soll.public void removeTriggerTarget(TriggerTarget triggerTarget)
Trigger
Entfernt ein vorher hinzugefügtes TriggerTarget.
removeTriggerTarget
in interface Trigger
triggerTarget
- Listener-Objekt, das entfernt werden soll.private void shootTriggerTargets()
Benachrichtigt alle TriggerTargets über das Auslösen des Triggers
private void closeTriggerTargets()
Benachrichtigt alle TriggerTargets über das Auslösen des Triggers