Class SpecializedProjectionIndexer
- java.lang.Object
-
- org.eclipse.viatra.query.runtime.rete.network.BaseNode
-
- org.eclipse.viatra.query.runtime.rete.index.StandardIndexer
-
- org.eclipse.viatra.query.runtime.rete.index.SpecializedProjectionIndexer
-
- All Implemented Interfaces:
java.lang.Iterable<Tuple>,Indexer,IterableIndexer,ProjectionIndexer,NetworkStructureChangeSensitiveNode,Node
- Direct Known Subclasses:
IdentityIndexer,NullIndexer
public abstract class SpecializedProjectionIndexer extends StandardIndexer implements ProjectionIndexer
A specialized projection indexer that can be memory-less (relying on an external source of information).All specialized projection indexers of a single node will share the same listener list, so that notification order is maintained (see Bug 518434).
- No Implement:
- Rely on the provided implementations
- No Reference:
- Use only via standard Node and Indexer interfaces
- No Instantiate:
- This class is not intended to be instantiated by clients.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSpecializedProjectionIndexer.ListenerSubscriptionInfrastructure to share subscriptions between specialized indexers of the same parent node.
-
Field Summary
Fields Modifier and Type Field Description protected NodeactiveNodeprotected java.util.List<SpecializedProjectionIndexer.ListenerSubscription>subscriptions-
Fields inherited from class org.eclipse.viatra.query.runtime.rete.index.StandardIndexer
mask, parent
-
Fields inherited from class org.eclipse.viatra.query.runtime.rete.network.BaseNode
nodeId, reteContainer, tag, traceInfos
-
-
Constructor Summary
Constructors Constructor Description SpecializedProjectionIndexer(ReteContainer reteContainer, TupleMask mask, Supplier parent, Node activeNode, java.util.List<SpecializedProjectionIndexer.ListenerSubscription> subscriptions)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidattachListener(IndexerListener listener)voiddetachListener(IndexerListener listener)NodegetActiveNode()This indexer will be updated whenever a Rete update is sent to the active node (or an equivalent time slot allotted to it).java.util.List<SpecializedProjectionIndexer.ListenerSubscription>getSubscriptions()voidnetworkStructureChanged()At the time of the invocation, the dependency graph has already been updated.protected voidpropagate(Direction direction, Tuple updateElement, Tuple signature, boolean change, Timestamp timestamp)abstract voidpropagateToListener(IndexerListener listener, Direction direction, Tuple updateElement, Timestamp timestamp)-
Methods inherited from class org.eclipse.viatra.query.runtime.rete.index.StandardIndexer
assignTraceInfo, getContainer, getListeners, getMask, getParent, toStringCore
-
Methods inherited from class org.eclipse.viatra.query.runtime.rete.network.BaseNode
acceptPropagatedTraceInfo, getNodeId, getTag, getTraceInfoPatternsEnumerated, getTraceInfos, setTag, toString
-
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.index.Indexer
get, getListeners, getMask, getParent, getTimeline
-
Methods inherited from interface org.eclipse.viatra.query.runtime.rete.index.IterableIndexer
getBucketCount, getSignatures
-
Methods inherited from interface org.eclipse.viatra.query.runtime.rete.network.Node
acceptPropagatedTraceInfo, assignTraceInfo, getCommunicationTracker, getContainer, getNodeId, getTag, getTraceInfos, setTag
-
-
-
-
Field Detail
-
activeNode
protected Node activeNode
-
subscriptions
protected java.util.List<SpecializedProjectionIndexer.ListenerSubscription> subscriptions
-
-
Constructor Detail
-
SpecializedProjectionIndexer
public SpecializedProjectionIndexer(ReteContainer reteContainer, TupleMask mask, Supplier parent, Node activeNode, java.util.List<SpecializedProjectionIndexer.ListenerSubscription> subscriptions)
- Since:
- 1.7
-
-
Method Detail
-
getSubscriptions
public java.util.List<SpecializedProjectionIndexer.ListenerSubscription> getSubscriptions()
-
getActiveNode
public Node getActiveNode()
Description copied from interface:IndexerThis indexer will be updated whenever a Rete update is sent to the active node (or an equivalent time slot allotted to it). The active node is typically the indexer itself, but it can be a different node such as its parent.- Specified by:
getActiveNodein interfaceIndexer- Returns:
- the active node that operates this indexer
-
propagate
protected void propagate(Direction direction, Tuple updateElement, Tuple signature, boolean change, Timestamp timestamp)
- Overrides:
propagatein classStandardIndexer
-
attachListener
public void attachListener(IndexerListener listener)
- Specified by:
attachListenerin interfaceIndexer- Overrides:
attachListenerin classStandardIndexer
-
detachListener
public void detachListener(IndexerListener listener)
- Specified by:
detachListenerin interfaceIndexer- Overrides:
detachListenerin classStandardIndexer
-
networkStructureChanged
public void networkStructureChanged()
Description copied from interface:NetworkStructureChangeSensitiveNodeAt the time of the invocation, the dependency graph has already been updated.- Specified by:
networkStructureChangedin interfaceNetworkStructureChangeSensitiveNode- Overrides:
networkStructureChangedin classStandardIndexer
-
propagateToListener
public abstract void propagateToListener(IndexerListener listener, Direction direction, Tuple updateElement, Timestamp timestamp)
- Since:
- 2.4
-
-