Class DeltaMonitor<MatchType>
- java.lang.Object
-
- org.eclipse.viatra.query.runtime.rete.network.BaseNode
-
- org.eclipse.viatra.query.runtime.rete.misc.SimpleReceiver
-
- org.eclipse.viatra.query.runtime.rete.misc.DeltaMonitor<MatchType>
-
- Direct Known Subclasses:
DefaultDeltaMonitor
public abstract class DeltaMonitor<MatchType> extends SimpleReceiver implements Clearable
A monitoring object that connects to the rete network as a receiver to reflect changes since an arbitrary state acknowledged by the client. Match tuples are represented by a type MatchType.Usage. If a new matching is found, it appears in the matchFoundEvents collection, and disappears when that particular matching cannot be found anymore. If the event of finding a match has been processed by the client, it can be removed manually. In this case, when a previously found matching is lost, the Tuple will appear in the matchLostEvents collection, and disappear upon finding the same matching again. "Matching lost" events can also be acknowledged by removing a Tuple from the collection. If the matching is found once again, it will return to matchFoundEvents.
Technical notes. Does NOT propagate updates! By overriding statelessConvert(), results can be stored to a MatchType. MatchType must provide equals() and hashCode() reflecting its contents. The default implementation (DefaultDeltaMonitor) uses Tuple as MatchType. By overriding statelessFilter(), some tuples can be filtered.
-
-
Field Summary
Fields Modifier and Type Field Description java.util.Collection<MatchType>
matchFoundEvents
matches that are newly foundjava.util.Collection<MatchType>
matchLostEvents
matches that are newly lost-
Fields inherited from class org.eclipse.viatra.query.runtime.rete.misc.SimpleReceiver
mailbox, parent
-
Fields inherited from class org.eclipse.viatra.query.runtime.rete.network.BaseNode
nodeId, reteContainer, tag, traceInfos
-
-
Constructor Summary
Constructors Constructor Description DeltaMonitor(ReteContainer reteContainer)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
clear()
Clear all partial matchings stored in memoryabstract MatchType
statelessConvert(Tuple tuple)
boolean
statelessFilter(Tuple tuple)
Override this method to provide a lightweight, stateless filter on the tuplesvoid
update(Direction direction, Tuple updateElement, Timestamp timestamp)
Updates the receiver with a newly found or lost partial matching.-
Methods inherited from class org.eclipse.viatra.query.runtime.rete.misc.SimpleReceiver
appendParent, assignTraceInfo, disconnectFromNetwork, getMailbox, getParents, instantiateMailbox, removeParent
-
Methods inherited from class org.eclipse.viatra.query.runtime.rete.network.BaseNode
acceptPropagatedTraceInfo, getContainer, getNodeId, getTag, getTraceInfoPatternsEnumerated, getTraceInfos, setTag, toString, toStringCore
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.viatra.query.runtime.rete.network.Node
acceptPropagatedTraceInfo, getCommunicationTracker, getContainer, getNodeId, getTag, getTraceInfos, setTag
-
Methods inherited from interface org.eclipse.viatra.query.runtime.rete.network.Receiver
batchUpdate
-
-
-
-
Constructor Detail
-
DeltaMonitor
public DeltaMonitor(ReteContainer reteContainer)
- Parameters:
reteContainer
-
-
-
Method Detail
-
statelessFilter
public boolean statelessFilter(Tuple tuple)
Override this method to provide a lightweight, stateless filter on the tuples- Parameters:
tuple
- the occurrence that is to be filtered- Returns:
- true if this tuple should be monitored, false if ignored
-
update
public void update(Direction direction, Tuple updateElement, Timestamp timestamp)
Description copied from interface:Receiver
Updates the receiver with a newly found or lost partial matching.
-
-