|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.h2.mvstore.StreamStore
public class StreamStore
A facility to store streams in a map. Streams are split into blocks, which are stored in a map. Very small streams are inlined in the stream id.
The key of the map is a long (incremented for each stored block). The default initial value is 0. Before storing blocks into the map, the stream store checks if there is already a block with the next key, and if necessary searches the next free entry using a binary search (0 to Long.MAX_VALUE).
Before storing
The format of the binary id is: An empty id represents 0 bytes of data. In-place data is encoded as 0, the size (a variable size int), then the data. A stored block is encoded as 1, the length of the block (a variable size int), then the key (a variable size long). Multiple ids can be concatenated to concatenate the data. If the id is large, it is stored itself, which is encoded as 2, the total length (a variable size long), and the key of the block that contains the id (a variable size long).
Constructor Summary | |
---|---|
StreamStore(java.util.Map<java.lang.Long,byte[]> map)
Create a stream store instance. |
Method Summary | |
---|---|
java.io.InputStream |
get(byte[] id)
Open an input stream to read data. |
java.util.Map<java.lang.Long,byte[]> |
getMap()
|
long |
getMaxBlockSize()
|
int |
getMinBlockSize()
|
long |
getNextKey()
|
boolean |
isInPlace(byte[] id)
Check whether the id itself contains all the data. |
long |
length(byte[] id)
Calculate the number of data bytes for the given id. |
protected void |
onStore(int len)
This method is called after a block of data is stored. |
byte[] |
put(java.io.InputStream in)
Store the stream, and return the id. |
void |
remove(byte[] id)
Remove all stored blocks for the given id. |
void |
setMaxBlockSize(int maxBlockSize)
Set the maximum block size. |
void |
setMinBlockSize(int minBlockSize)
Set the minimum block size. |
void |
setNextKey(long nextKey)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public StreamStore(java.util.Map<java.lang.Long,byte[]> map)
map
- the map to store blocks of dataMethod Detail |
---|
public java.util.Map<java.lang.Long,byte[]> getMap()
public void setNextKey(long nextKey)
public long getNextKey()
public void setMinBlockSize(int minBlockSize)
minBlockSize
- the new valuepublic int getMinBlockSize()
public void setMaxBlockSize(int maxBlockSize)
maxBlockSize
- the new valuepublic long getMaxBlockSize()
public byte[] put(java.io.InputStream in) throws java.io.IOException
in
- the stream
java.io.IOException
protected void onStore(int len)
len
- the length of the stored block.public void remove(byte[] id)
id
- the idpublic long length(byte[] id)
id
- the id
public boolean isInPlace(byte[] id)
id
- the id
public java.io.InputStream get(byte[] id)
id
- the id
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |