Class LockGuardedDrivenValue<T>
- java.lang.Object
-
- com.inductiveautomation.perspective.gateway.driven.LockGuardedDrivenValue<T>
-
- Type Parameters:
T- The type of the driven value
- All Implemented Interfaces:
DrivenValue<T>
- Direct Known Subclasses:
ExpressionDrivenValue,LockGuardedDrivenValueCollection
public abstract class LockGuardedDrivenValue<T> extends java.lang.Object implements DrivenValue<T>
A LockGuardedDrivenValue is aDrivenValuewhich holds a lock object and asserts that Threads which callisReady(),isDirty(), andgetAndClear()hold this lock. Client code must synchronize on the lock before calling any of these methods.- See Also:
Thread.holdsLock(Object)
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.Objectlock
-
Constructor Summary
Constructors Modifier Constructor Description protectedLockGuardedDrivenValue(java.lang.Object lock)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description java.util.Optional<T>getAndClear()Fetch the current driven valueprotected abstract java.util.Optional<T>getAndClearInternal()Called after asserting that the calling thread holds the injected lock.booleanisDirty()protected abstract booleanisDirtyInternal()Called after asserting that the calling thread holds the injected lock.booleanisReady()protected abstract booleanisReadyInternal()Called after asserting that the calling thread holds the injected lock.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.inductiveautomation.perspective.gateway.driven.DrivenValue
shutdown, startup
-
-
-
-
Method Detail
-
isReadyInternal
protected abstract boolean isReadyInternal()
Called after asserting that the calling thread holds the injected lock.- See Also:
isReady()
-
isReady
public boolean isReady()
- Specified by:
isReadyin interfaceDrivenValue<T>- Returns:
- true if the driven value is ready to fetch
-
isDirtyInternal
protected abstract boolean isDirtyInternal()
Called after asserting that the calling thread holds the injected lock.- See Also:
isDirty()
-
isDirty
public boolean isDirty()
- Specified by:
isDirtyin interfaceDrivenValue<T>- Returns:
- true if the driven value has changed since the last time it was fetched
-
getAndClearInternal
@Nonnull protected abstract java.util.Optional<T> getAndClearInternal()
Called after asserting that the calling thread holds the injected lock.- See Also:
getAndClear()
-
getAndClear
@Nonnull public java.util.Optional<T> getAndClear()
Description copied from interface:DrivenValueFetch the current driven value- Specified by:
getAndClearin interfaceDrivenValue<T>- Returns:
- An
Optionalcontaining the current driven value, if present, or an empty Optional if the driven value is null / not present.
-
-