net.ranides.assira.events
Class EventLockUnsafe

java.lang.Object
  extended by net.ranides.assira.events.EventLock
      extended by net.ranides.assira.events.EventLockUnsafe
All Implemented Interfaces:
EventListener<Event>

@Meta.Unsafe
public class EventLockUnsafe
extends EventLock
implements EventListener<Event>

Implementacja zwracana przez EventLock.unsafeLock(java.lang.Class, net.ranides.assira.events.EventRouter)

Author:
ranides

Method Summary
 void handleEvent(Event event)
          Metoda implementująca reakcję na zdarzenie.
 EventListener<Event> listener()
          Metoda, której obsługa przez konkretne implementacje jest obowiązkowa.
 void release()
          Niszczy obiekt EventLock i zwalnia wszystkie zasoby.
 void reset()
          Resetuje stan obiektu - jeśli EventLock przechowywał w kolejce nieobsłużone zdarzenia - są one usuwane.
 Event waitForEvent()
          Metoda blokująca: wstrzymuje wykonanie bieżącego wątku do momentu, aż do obserwowanego EventRouter'a dotrze dowolne zdarzenie oczekiwane przez EventLock lub wystąpi wyjątek InterruptedException.
<T extends Event>
T
waitForEvent(Class<T> event)
          Wersja oczekująca na zdarzenie konkretnego rodzaju.
<T extends Event>
T
waitForEvent(Class<T> event, long timeout)
          Wersja oczekująca na zdarzenie konkretnego rodzaju.
 Event waitForEvent(long timeout)
          Metoda blokująca: wstrzymuje wykonanie bieżącego wątku do momentu, aż do obserwowanego EventRouter'a dotrze dowolne zdarzenie oczekiwane przez EventLock, wystąpi wyjątek InterruptedException, lub minie podany czas.
 
Methods inherited from class net.ranides.assira.events.EventLock
lock, singleLock, unsafeLock, weakLock
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

handleEvent

public void handleEvent(Event event)
Description copied from interface: EventListener
Metoda implementująca reakcję na zdarzenie. Należy zwrócić uwagę, że wątek, w którym metoda zostanie wywołana, może być trudny do ustalenia.

Dokładniej rzecz ujmując: o tym, w jakim wątku zostanie wywołana metoda decyduje EventRouter, do którego Listener został podpięty. Jeśli podpięto obiekt do wielu EventRouter'ów, to każdy może zostać wywołany w zupełnie innym kontekście.

Specified by:
handleEvent in interface EventListener<Event>

waitForEvent

public Event waitForEvent()
                   throws InterruptedException
Description copied from class: EventLock
Metoda blokująca: wstrzymuje wykonanie bieżącego wątku do momentu, aż do obserwowanego EventRouter'a dotrze dowolne zdarzenie oczekiwane przez EventLock lub wystąpi wyjątek InterruptedException. Zobacz opis klasy EventLock aby poznać szczegóły.

Specified by:
waitForEvent in class EventLock
Returns:
oczekiwane zdarzenie
Throws:
InterruptedException

waitForEvent

public Event waitForEvent(long timeout)
                   throws InterruptedException
Description copied from class: EventLock
Metoda blokująca: wstrzymuje wykonanie bieżącego wątku do momentu, aż do obserwowanego EventRouter'a dotrze dowolne zdarzenie oczekiwane przez EventLock, wystąpi wyjątek InterruptedException, lub minie podany czas. Zobacz opis klasy EventLock aby poznać szczegóły.

Specified by:
waitForEvent in class EventLock
Returns:
oczekiwane zdarzenie
Throws:
InterruptedException

waitForEvent

public <T extends Event> T waitForEvent(Class<T> event)
                             throws InterruptedException
Description copied from class: EventLock
Wersja oczekująca na zdarzenie konkretnego rodzaju. Zachowuje się identycznie jak EventLock.waitForEvent(), z tą różnicą, że reaguje na mniejszy zakres zdarzeń - zawężony tylko do podanej klasy oraz jej pochodnych.

Metoda przydatna szczególnie wtedy, gdy utworzony obiekt EventLock reaguje na bardzo ogólną klasę zdarzeń, a użytkownik w danym momencie chce wstrzymać wykonanie w oczekiwaniu na zdarzenie bardziej szczegółowe.

Specified by:
waitForEvent in class EventLock
Returns:
oczekiwane zdarzenie lub null, jeśli minął timeout
Throws:
InterruptedException

waitForEvent

public <T extends Event> T waitForEvent(Class<T> event,
                                        long timeout)
                             throws InterruptedException
Description copied from class: EventLock
Wersja oczekująca na zdarzenie konkretnego rodzaju. Zachowuje się identycznie jak EventLock.waitForEvent(long timeout), z tą różnicą, że reaguje na mniejszy zakres zdarzeń - zawężony tylko do podanej klasy oraz jej pochodnych.

Metoda przydatna szczególnie wtedy, gdy utworzony obiekt EventLock reaguje na bardzo ogólną klasę zdarzeń, a użytkownik w danym momencie chce wstrzymać wykonanie w oczekiwaniu na zdarzenie bardziej szczegółowe.

Specified by:
waitForEvent in class EventLock
Returns:
oczekiwane zdarzenie lub null, jeśli minął timeout
Throws:
InterruptedException

reset

public void reset()
Description copied from class: EventLock
Resetuje stan obiektu - jeśli EventLock przechowywał w kolejce nieobsłużone zdarzenia - są one usuwane. Wywołanie funkcji reset pomiędzy dwoma wywołaniami metody wait może spowodować, że część zdarzeń, którymi EventLock był zainteresowany zostanie utracona.

Specified by:
reset in class EventLock

release

public void release()
Description copied from class: EventLock
Niszczy obiekt EventLock i zwalnia wszystkie zasoby.

Specified by:
release in class EventLock

listener

public EventListener<Event> listener()
Description copied from class: EventLock
Metoda, której obsługa przez konkretne implementacje jest obowiązkowa. Obiekt zwrócony przez metodę jest używany do łączenia z routerem, na który będziemy oczekiwać.

Returns:


Copyright © 2013. All Rights Reserved.