public class ForkAdjunct extends StreamingAdjunct
The general strategy is to create an inversion of the expression in each prong of the fork, and to create a separate watch for each one. These watches create output which is buffered, and on completion the outputs of each watch are assembled in the right order.
The implementation is NOT multithreaded: although the prongs of the fork execute conceptually in parallel, in that they all act as listeners responding to the same sequence of events, they actually all run in the same thread.
Modifier and Type | Class and Description |
---|---|
static class |
ForkAdjunct.FeedToEventBuffer |
Constructor and Description |
---|
ForkAdjunct() |
Modifier and Type | Method and Description |
---|---|
PostureAndSweep |
computeStreamability(ContextItemStaticInfoEE contextInfo,
java.util.List<java.lang.String> reasons)
Compute the posture and sweep of this expression as defined in the W3C streamability specifications.
|
WatchMaker |
getWatchMaker(boolean forGrouping)
Get a WatchMaker, a factory class that creates a Watch to evaluate this expression
in streaming mode.
|
findConsumingArg, getConfiguration, getDefaultFeedMaker, getExpression, getFeedMaker, makeStreamingAdjunct, setConfiguration, setExpression, toStreamingPattern
public PostureAndSweep computeStreamability(ContextItemStaticInfoEE contextInfo, java.util.List<java.lang.String> reasons)
computeStreamability
in class StreamingAdjunct
contextInfo
- Information about the context item type and posturereasons
- the caller may supply a list, in which case the implementation may add to thispublic WatchMaker getWatchMaker(boolean forGrouping) throws XPathException
StreamingAdjunct
Expression.WATCH_METHOD
getWatchMaker
in class StreamingAdjunct
forGrouping
- true if the selected items are being groupedXPathException
- in the event of a failureCopyright (c) 2004-2020 Saxonica Limited. All rights reserved.