Package org.glassfish.grizzly.utils
Class StateHolder<E>
- java.lang.Object
-
- org.glassfish.grizzly.utils.StateHolder<E>
-
public final class StateHolder<E> extends Object
Class, which holds the state. Provides API for state change notification, state read/write access locking.- Author:
- Alexey Stashok
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classStateHolder.ConditionElement<E>
-
Constructor Summary
Constructors Constructor Description StateHolder()ConstructsStateHolder.StateHolder(E initialState)ConstructsStateHolder.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description EgetState()Gets current state Current StateHolder locking mode will be usedReentrantReadWriteLockgetStateLocker()Gets Read/Write locker, which is used by thisStateHolderprotected voidnotifyConditionListeners()Future<E>notifyWhenConditionMatchState(Condition condition, CompletionHandler<E> completionHandler)Register listener, which will be notified, when state will match the condition.Future<E>notifyWhenStateIsEqual(E state, CompletionHandler<E> completionHandler)Register listener, which will be notified, when state will be equal to passed one.Future<E>notifyWhenStateIsNotEqual(E state, CompletionHandler<E> completionHandler)Register listener, which will be notified, when state will become not equal to passed one.voidsetState(E state)Sets current state Current StateHolder locking mode will be used
-
-
-
Constructor Detail
-
StateHolder
public StateHolder()
ConstructsStateHolder.
-
StateHolder
public StateHolder(E initialState)
ConstructsStateHolder.
-
-
Method Detail
-
getState
public E getState()
Gets current state Current StateHolder locking mode will be used- Returns:
- state
-
setState
public void setState(E state)
Sets current state Current StateHolder locking mode will be used- Parameters:
state-
-
getStateLocker
public ReentrantReadWriteLock getStateLocker()
Gets Read/Write locker, which is used by thisStateHolder- Returns:
- locker
-
notifyWhenStateIsEqual
public Future<E> notifyWhenStateIsEqual(E state, CompletionHandler<E> completionHandler)
Register listener, which will be notified, when state will be equal to passed one. Once listener will be notified - it will be removed from thisStateHolder's listener set.- Parameters:
state- State, listener is interested incompletionHandler- that will be notified. ThisStateHolderimplementation works with Runnable, Callable, CountDownLatch, Object listeners- Returns:
ConditionListener, if current state is not equal to required and listener was registered, null if current state is equal to required. In both cases listener will be notified
-
notifyWhenStateIsNotEqual
public Future<E> notifyWhenStateIsNotEqual(E state, CompletionHandler<E> completionHandler)
Register listener, which will be notified, when state will become not equal to passed one. Once listener will be notified - it will be removed from thisStateHolder's listener set.- Parameters:
state- State, listener is interested incompletionHandler- that will be notified. ThisStateHolderimplementation works with Runnable, Callable, CountDownLatch, Object listeners- Returns:
ConditionListener, if current state is equal to required and listener was registered, null if current state is not equal to required. In both cases listener will be notified
-
notifyWhenConditionMatchState
public Future<E> notifyWhenConditionMatchState(Condition condition, CompletionHandler<E> completionHandler)
Register listener, which will be notified, when state will match the condition. Once listener will be notified - it will be removed from thisStateHolder's listener set.- Parameters:
condition- Condition, the listener is interested incompletionHandler- that will be notified. ThisStateHolderimplementation works with Runnable, Callable, CountDownLatch, Object listeners- Returns:
ConditionListener, if current state doesn't match the condition and listener was registered, null if current state matches the condition. In both cases listener will be notified
-
notifyConditionListeners
protected void notifyConditionListeners()
-
-