# 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 Summary

Constructors
Constructor
Description
`CacheRowPipe()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`acceptMetadata(uk.ac.starlink.table.StarTable meta)`
`void`
`acceptRow(Object[] row)`
`void`
`endRows()`
`void`
`setError(IOException err)`
`uk.ac.starlink.table.StarTable`
`waitForStarTable()`
Returns a multiply-readable random access table.

### Methods inherited from class Object

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

## 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`