public abstract class JoinExecutorBase<T>
extends org.eclipse.rdf4j.common.iteration.LookAheadIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>
LookAheadIteration and thus any
implementation of this class is applicable for pipelining when used in a different thread (access to shared variables
is synchronized).| Modifier and Type | Field and Description |
|---|---|
protected org.eclipse.rdf4j.query.BindingSet |
bindings |
protected boolean |
closed
Deprecated.
Use
AbstractCloseableIteration.isClosed() instead. |
protected boolean |
finished
Deprecated.
Use
isFinished() instead. |
protected org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> |
leftIter |
protected static int |
NEXT_JOIN_ID
Deprecated.
No replacement, don't use static shared int variables.
|
protected org.eclipse.rdf4j.query.algebra.TupleExpr |
rightArg |
protected org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> |
rightIter |
protected QueueCursor<org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>> |
rightQueue |
| Modifier | Constructor and Description |
|---|---|
protected |
JoinExecutorBase(org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> leftIter,
org.eclipse.rdf4j.query.algebra.TupleExpr rightArg,
org.eclipse.rdf4j.query.BindingSet bindings) |
| Modifier and Type | Method and Description |
|---|---|
void |
addResult(org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> res) |
void |
done() |
T |
getNextElement() |
protected abstract void |
handleBindings()
Implementations must implement this method to handle bindings.
|
void |
handleClose() |
boolean |
isFinished()
Gets whether this executor is finished or aborted.
|
void |
run() |
void |
toss(Exception e) |
hasNext, next, removeclose, isClosedprotected static int NEXT_JOIN_ID
protected final org.eclipse.rdf4j.query.algebra.TupleExpr rightArg
protected final org.eclipse.rdf4j.query.BindingSet bindings
protected final org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> leftIter
protected volatile org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> rightIter
protected volatile boolean closed
AbstractCloseableIteration.isClosed() instead.protected volatile boolean finished
isFinished() instead.protected final QueueCursor<org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>> rightQueue
protected JoinExecutorBase(org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> leftIter, org.eclipse.rdf4j.query.algebra.TupleExpr rightArg, org.eclipse.rdf4j.query.BindingSet bindings) throws org.eclipse.rdf4j.query.QueryEvaluationException
org.eclipse.rdf4j.query.QueryEvaluationExceptionpublic final void run()
protected abstract void handleBindings()
throws Exception
while (!closed && leftIter.hasNext()) {
// your code
}
and add results to rightQueue. Note that addResult() is implemented synchronized and thus thread safe. In
case you can guarantee sequential access, it is also possible to directly access rightQueueExceptionpublic void addResult(org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> res)
public void done()
public void toss(Exception e)
public T getNextElement() throws org.eclipse.rdf4j.query.QueryEvaluationException
getNextElement in class org.eclipse.rdf4j.common.iteration.LookAheadIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>org.eclipse.rdf4j.query.QueryEvaluationExceptionpublic void handleClose()
throws org.eclipse.rdf4j.query.QueryEvaluationException
handleClose in class org.eclipse.rdf4j.common.iteration.LookAheadIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>org.eclipse.rdf4j.query.QueryEvaluationExceptionpublic boolean isFinished()
Copyright © 2015-2020 Eclipse Foundation. All Rights Reserved.