Class CacheRowPipe

java.lang.Object
uk.ac.starlink.ttools.calc.CacheRowPipe
All Implemented Interfaces:
uk.ac.starlink.table.RowPipe, uk.ac.starlink.table.TableSink

public class CacheRowPipe extends Object implements uk.ac.starlink.table.RowPipe
RowPipe implementation which caches the data to provide a random-access StarTable.

The current implementation simply delegates to a OnceRowPipe and caches the result before returning it from waitForStarTable. This is crude, and means that the output rows don't start to come until all the input rows have been written to the pipe (so there's not much point using a pipe). A future implementation should get smarter with threads to improve this.

Since:
14 Oct 2011
Author:
Mark Taylor
  • Constructor Details

    • CacheRowPipe

      public CacheRowPipe()
      Constructor.
  • Method Details

    • acceptMetadata

      public void acceptMetadata(uk.ac.starlink.table.StarTable meta) throws uk.ac.starlink.table.TableFormatException
      Specified by:
      acceptMetadata in interface uk.ac.starlink.table.TableSink
      Throws:
      uk.ac.starlink.table.TableFormatException
    • acceptRow

      public void acceptRow(Object[] row) throws IOException
      Specified by:
      acceptRow in interface uk.ac.starlink.table.TableSink
      Throws:
      IOException
    • endRows

      public void endRows() throws IOException
      Specified by:
      endRows in interface uk.ac.starlink.table.TableSink
      Throws:
      IOException
    • setError

      public void setError(IOException err)
      Specified by:
      setError in interface uk.ac.starlink.table.RowPipe
    • waitForStarTable

      public uk.ac.starlink.table.StarTable waitForStarTable() throws IOException
      Returns a multiply-readable random access table.
      Specified by:
      waitForStarTable in interface uk.ac.starlink.table.RowPipe
      Returns:
      random access, multiply readable table with the same content as the rows accepted by this pipe
      Throws:
      IOException