Package com.saxonica.ee.stream

## Class PushToPull

- java.lang.Object
- - com.saxonica.ee.stream.PushToPull

-     public class PushToPull
      extends java.lang.Object

  This class evaluates an expression in push mode in one thread, and provides an iterator to read the results of the expression in pull mode in the original thread.

  It is used when an xsl:stream instruction is executed in pull mode, for example when it is called within a function. It is also used for the implicit xsl:stream instruction executed during streamed merging.

  Since:
    9.7. This class replaces the Conduit class used in previous Saxon releases, which used a home-grown equivalent of the BlockingQueue.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static interface` | `PushToPull.Pusher` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PushToPull​(PushToPull.Pusher expression, XPathContext context)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `SequenceIterator` | `getIterator()` | Get an iterator over the result of evaluating the supplied expression.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### PushToPull

          public PushToPull​(PushToPull.Pusher expression,
                            XPathContext context)

  - ### Method Detail

    - #### getIterator

          public SequenceIterator getIterator()

      Get an iterator over the result of evaluating the supplied expression.
      Returns:
        an iterator. Calls to next() on this iterator will read items from the queue, waiting if necessary until the next item becomes available.