uk.ac.starlink.table.storage
Class AdaptiveByteStore

java.lang.Object
  extended byuk.ac.starlink.table.storage.AdaptiveByteStore
All Implemented Interfaces:
ByteStore

public class AdaptiveByteStore
extends Object
implements ByteStore

ByteStore which adopts a hybrid approach between use of memory and use of disk. Bytes are written into an array in memory up to a given size limit; if the amount written exceeds this limit, it's all put in a temporary file instead. This is intended to be a general purpose implementation that does something sensible most of the time.

Since:
5 Nov 2009

Constructor Summary
AdaptiveByteStore()
          Constructs a new store with a default memory limit.
AdaptiveByteStore(int memLimit)
          Constructs a new store with a given maximum memory limit.
 
Method Summary
 void close()
          Tidies up.
 void copy(OutputStream out)
          Takes all the data written so far into this store's sink stream and copies it to a destination stream.
 OutputStream getOutputStream()
          Returns an output stream which can be used to write to the store.
 ByteBuffer toByteBuffer()
          Returns a byte buffer containing the bytes written to this store.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AdaptiveByteStore

public AdaptiveByteStore(int memLimit)
                  throws IOException
Constructs a new store with a given maximum memory limit.

Parameters:
memLimit - maximum size of in-memory buffer

AdaptiveByteStore

public AdaptiveByteStore()
                  throws IOException
Constructs a new store with a default memory limit.

Method Detail

getOutputStream

public OutputStream getOutputStream()
Description copied from interface: ByteStore
Returns an output stream which can be used to write to the store. May be called multiple times; always returns the same object. Note that this is not in general buffered - it is the responsibility of the user to take steps like wrapping it in a BufferedOutputStream for efficiency if required.

Specified by:
getOutputStream in interface ByteStore
Returns:
data sink stream

copy

public void copy(OutputStream out)
          throws IOException
Description copied from interface: ByteStore
Takes all the data written so far into this store's sink stream and copies it to a destination stream. The output stream is not closed.

Specified by:
copy in interface ByteStore
Parameters:
out - data destination stream
Throws:
IOException

toByteBuffer

public ByteBuffer toByteBuffer()
                        throws IOException
Description copied from interface: ByteStore
Returns a byte buffer containing the bytes written to this store. The buffer's limit indicates the amount of data written.

Usual usage will be to write all data, then call this method once; this model may affect implementation decisions about efficiency.

Specified by:
toByteBuffer in interface ByteStore
Returns:
byte buffer containing bytes written
Throws:
IOException - if there is a problem, including if the number of byte written exceeds Integer.MAX_VALUE

close

public void close()
Description copied from interface: ByteStore
Tidies up. Should be called when the data in this object is no longer required. This object may no longer be usable following a call to this method.

Specified by:
close in interface ByteStore

Copyright © 2004 CLRC: Central Laboratory of the Research Councils. All rights reserved.