org.eclipse.viatra.query.runtime.rete.network

## Interface Supplier

- All Superinterfaces:
    Node
  All Known Subinterfaces:
    ProductionNode, Tunnel
  All Known Implementing Classes:
    AbstractColumnAggregatorNode, AbstractEvaluatorNode, AbstractUniquenessEnforcerNode, ColumnAggregatorNode, ConstantNode, CountNode, DefaultProductionNode, DiscriminatorBucketNode, DiscriminatorDispatcherNode, DualInputNode, EqualityFilterNode, ExistenceNode, ExternalInputEnumeratorNode, ExternalInputStatelessFilterNode, FilterNode, IndexerBasedAggregatorNode, InequalityFilterNode, JoinNode, MemorylessEvaluatorNode, OutputCachingEvaluatorNode, RemoteReceiver, RemoteSupplier, RetePatternMatcher, SingleInputNode, StandardNode, TimelyProductionNode, TimelyUniquenessEnforcerNode, TransformerNode, TransitiveClosureNode, TransparentNode, TrimmerNode, UniquenessEnforcerNode, ValueBinderFilterNode

      public interface Supplier
      extends Node

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `appendChild(Receiver receiver)` appends a receiver that will continously receive insert and revoke updates from this supplier
    `ProjectionIndexer` | `constructIndex(TupleMask mask, TraceInfo... traces)` Instantiates (or reuses, depending on implementation) an index according to the given mask.
    `default java.util.Set<Tuple>` | `getPulledContents()`
    `java.util.Set<Tuple>` | `getPulledContents(boolean flush)` Returns the contents of this object in this particular moment.
    `java.util.Collection<Receiver>` | `getReceivers()` lists receivers
    `void` | `pullInto(java.util.Collection<Tuple> collector, boolean flush)` Pulls the contents of this object in this particular moment into a target collection.
    `void` | `pullIntoWithTimeline(java.util.Map<Tuple,Timeline<Timestamp>> collector, boolean flush)`
    `void` | `removeChild(Receiver receiver)` removes a receiver

    - ### Methods inherited from interface org.eclipse.viatra.query.runtime.rete.network.Node

      `acceptPropagatedTraceInfo, assignTraceInfo, getCommunicationTracker, getContainer, getNodeId, getTag, getTraceInfos, setTag`

- - ### Method Detail

    - #### pullInto

          void pullInto(java.util.Collection<Tuple> collector,
                        boolean flush)

      Pulls the contents of this object in this particular moment into a target collection.
      Parameters:
        `flush` - if true, flushing of messages is allowed during the pull, otherwise flushing is not allowed
      Since:
        2.3

    - #### pullIntoWithTimeline

          void pullIntoWithTimeline(java.util.Map<Tuple,Timeline<Timestamp>> collector,
                                    boolean flush)

      Since:
        2.4

    - #### getPulledContents

          java.util.Set<Tuple> getPulledContents(boolean flush)

      Returns the contents of this object in this particular moment. For memoryless nodes, this may involve a costly recomputation of contents. The result is returned as a Set, even when it has multiplicities (at the output of `TrimmerNode`).

      Intended mainly for debug purposes; therefore flushing is performed only if explicitly requested During runtime, flushing may be preferred; see `ReteContainer#pullContents(Supplier)`

      Since:
        2.3

    - #### getPulledContents

          default java.util.Set<Tuple> getPulledContents()

    - #### appendChild

          void appendChild(Receiver receiver)

      appends a receiver that will continously receive insert and revoke updates from this supplier

    - #### removeChild

          void removeChild(Receiver receiver)

      removes a receiver

    - #### constructIndex

          ProjectionIndexer constructIndex(TupleMask mask,
                                           TraceInfo... traces)

      Instantiates (or reuses, depending on implementation) an index according to the given mask. Intended for internal use; clients should invoke through Library instead to enable reusing.

    - #### getReceivers

          java.util.Collection<Receiver> getReceivers()

      lists receivers