org.eclipse.rdf4j.federated.evaluation.concurrent

## Class ParallelServiceExecutor

- java.lang.Object
- - org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<E,X>
  - - org.eclipse.rdf4j.common.iteration.LookAheadIteration<BindingSet,QueryEvaluationException>
    - - org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelServiceExecutor

- All Implemented Interfaces:
    AutoCloseable, Runnable, CloseableIteration<BindingSet,QueryEvaluationException>, Iteration<BindingSet,QueryEvaluationException>, ParallelExecutor<BindingSet>

      public class ParallelServiceExecutor
      extends LookAheadIteration<BindingSet,QueryEvaluationException>
      implements ParallelExecutor<BindingSet>

  Parallel executor for `FedXService` nodes, which wrap SERVICE expressions. Uses the union scheduler to execute the task
  Author:
    Andreas Schwarte

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected BindingSet` | `bindings`
    `protected Exception` | `error`
    `protected FederationContext` | `federationContext`
    `protected boolean` | `finished`
    `protected static org.slf4j.Logger` | `log`
    `protected CloseableIteration<BindingSet,QueryEvaluationException>` | `rightIter`
    `protected FedXService` | `service`
    `protected FederationEvalStrategy` | `strategy`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ParallelServiceExecutor(FedXService service, FederationEvalStrategy strategy, BindingSet bindings, FederationContext federationContext)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addResult(CloseableIteration<BindingSet,QueryEvaluationException> res)` Handle the result appropriately, e.g.
    `void` | `done()` Inform the controlling instance that some job is done from a different thread.
    `protected BindingSet` | `getNextElement()` Gets the next element.
    `QueryInfo` | `getQueryInfo()` Return the query info of the associated query
    `boolean` | `isFinished()` Return true if this executor is finished or aborted
    `void` | `run()`
    `void` | `toss(Exception e)` Toss some exception to the controlling instance

    - ### Methods inherited from class org.eclipse.rdf4j.common.iteration.LookAheadIteration

      `handleClose, hasNext, next, remove`

    - ### Methods inherited from class org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration

      `close, isClosed`

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

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

    - ### Methods inherited from interface org.eclipse.rdf4j.common.iteration.Iteration

      `stream`

- - ### Field Detail

    - #### log

          protected static final org.slf4j.Logger log

    - #### service

          protected final FedXService service

    - #### strategy

          protected final FederationEvalStrategy strategy

    - #### bindings

          protected final BindingSet bindings

    - #### federationContext

          protected final FederationContext federationContext

    - #### rightIter

          protected CloseableIteration<BindingSet,QueryEvaluationException> rightIter

    - #### finished

          protected boolean finished

    - #### error

          protected Exception error

  - ### Constructor Detail

    - #### ParallelServiceExecutor

          public ParallelServiceExecutor(FedXService service,
                                         FederationEvalStrategy strategy,
                                         BindingSet bindings,
                                         FederationContext federationContext)

      Parameters:
        `service` -
        `strategy` -
        `bindings` -
        `federationContext` -

  - ### Method Detail

    - #### run

          public void run()

      Specified by:
        `run` in interface `Runnable`

    - #### addResult

          public void addResult(CloseableIteration<BindingSet,QueryEvaluationException> res)

      Description copied from interface: `ParallelExecutor`
      Handle the result appropriately, e.g. add it to the result iteration. Take care for synchronization in a multithreaded environment
      Specified by:
        `addResult` in interface `ParallelExecutor<BindingSet>`

    - #### toss

          public void toss(Exception e)

      Description copied from interface: `ParallelExecutor`
      Toss some exception to the controlling instance
      Specified by:
        `toss` in interface `ParallelExecutor<BindingSet>`

    - #### done

          public void done()

      Description copied from interface: `ParallelExecutor`
      Inform the controlling instance that some job is done from a different thread. In most cases this is a no-op.
      Specified by:
        `done` in interface `ParallelExecutor<BindingSet>`

    - #### isFinished

          public boolean isFinished()

      Description copied from interface: `ParallelExecutor`
      Return true if this executor is finished or aborted
      Specified by:
        `isFinished` in interface `ParallelExecutor<BindingSet>`
      Returns:
        whether the execution is finished

    - #### getQueryInfo

          public QueryInfo getQueryInfo()

      Description copied from interface: `ParallelExecutor`
      Return the query info of the associated query
      Specified by:
        `getQueryInfo` in interface `ParallelExecutor<BindingSet>`
      Returns:
        the query info

    - #### getNextElement

          protected BindingSet getNextElement()
                                       throws QueryEvaluationException

      Description copied from class: `LookAheadIteration`
      Gets the next element. Subclasses should implement this method so that it returns the next element.
      Specified by:
        `getNextElement` in class `LookAheadIteration<BindingSet,QueryEvaluationException>`
      Returns:
        The next element, or `null` if no more elements are available.
      Throws:
        `QueryEvaluationException`

Copyright © 2015-2020 Eclipse Foundation. All Rights Reserved.