Interface BitstreamDispatcher

All Known Implementing Classes:
HandleDispatcher, IteratorDispatcher, LimitedCountDispatcher, LimitedDurationDispatcher, SimpleDispatcher

public interface BitstreamDispatcher

BitstreamDispatchers are strategy objects that hand bitstream ids out to workers. Implementations must be threadsafe.

The rationale behind the use of the Sentinel pattern (rather than the more traditional iterator pattern or a cursor c.f. java.sql.ResultSet): -

  1. To make it easy to make implementations thread safe - multithreaded invocation of the dispatchers is seen as a next step use case. In simple terms, this requires that a single method does all the work.
  2. Shouldn't an exception as the sentinel, as reaching the end of a loop is not an exceptional condition.
Author:
Jim Downing, Grace Carpenter, Nathan Sarr
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    This value should be returned by next() to indicate that there are no more values.
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns the next id for checking, or a sentinel value if there are no more to check.
  • Field Details

    • SENTINEL

      static final int SENTINEL
      This value should be returned by next() to indicate that there are no more values.
      See Also:
  • Method Details

    • next

      Bitstream next() throws SQLException
      Returns the next id for checking, or a sentinel value if there are no more to check.
      Returns:
      the next bitstream id, or BitstreamDispatcher.SENTINEL if there isn't another value
      Throws:
      SQLException - if database error