Package 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`, `RelationEvaluatorNode`, `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 | 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