org.h2.store
Class Data

java.lang.Object
  extended by org.h2.store.Data

public class Data
extends java.lang.Object

This class represents a byte buffer that contains persistent data of a page.


Field Summary
protected  byte[] data
          The data itself.
static int LENGTH_INT
          The length of an integer value.
 
Constructor Summary
protected Data(DataHandler handler, byte[] data)
           
 
Method Summary
 void checkCapacity(int plus)
          Check if there is still enough capacity in the buffer.
static Data create(DataHandler handler, byte[] buff)
          Create a new buffer using the given data for the given handler.
static Data create(DataHandler handler, int capacity)
          Create a new buffer for the given handler.
 void fillAligned()
          Fill up the buffer with empty space and an (initially empty) checksum until the size is a multiple of Constants.FILE_BLOCK_SIZE.
 byte[] getBytes()
          Get the byte array used for this page.
static int getStringLen(java.lang.String s)
          Get the length of a String.
 int getValueLen(Value v)
          Calculate the number of bytes required to encode the given value.
static int getVarIntLen(int x)
          The number of bytes required for a variable size int.
static int getVarLongLen(long x)
          The number of bytes required for a variable size long.
 int length()
          Get the current write position of this buffer, which is the current length.
 void read(byte[] buff, int off, int len)
          Copy a number of bytes to the given buffer from the current position.
 byte readByte()
          Read one single byte.
 int readInt()
          Read an integer at the current position.
 long readLong()
          Read a long value.
 short readShortInt()
          Read an short integer at the current position.
 java.lang.String readString()
          Read a String value.
 Value readValue()
          Read a value.
 int readVarInt()
          Read a variable size int.
 long readVarLong()
          Read a variable size long.
 void reset()
          Set the position to 0.
 void setInt(int pos, int x)
          Update an integer at the given position.
 void setPos(int pos)
          Set the current read / write position.
 void truncate(int size)
          Shrink the array to this size.
 void write(byte[] buff, int off, int len)
          Append a number of bytes to this buffer.
 void writeByte(byte x)
          Append one single byte.
 void writeInt(int x)
          Write an integer at the current position.
 void writeLong(long x)
          Append a long value.
 void writeShortInt(int x)
          Write a short integer at the current position.
 void writeString(java.lang.String s)
          Write a String.
 void writeValue(Value v)
          Append a value.
 void writeVarInt(int x)
          Write a variable size int.
 void writeVarLong(long x)
          Write a variable size long.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LENGTH_INT

public static final int LENGTH_INT
The length of an integer value.

See Also:
Constant Field Values

data

protected byte[] data
The data itself.

Constructor Detail

Data

protected Data(DataHandler handler,
               byte[] data)
Method Detail

setInt

public void setInt(int pos,
                   int x)
Update an integer at the given position. The current position is not change.

Parameters:
pos - the position
x - the value

writeInt

public void writeInt(int x)
Write an integer at the current position. The current position is incremented.

Parameters:
x - the value

readInt

public int readInt()
Read an integer at the current position. The current position is incremented.

Returns:
the value

getStringLen

public static int getStringLen(java.lang.String s)
Get the length of a String. This includes the bytes required to encode the length.

Parameters:
s - the string
Returns:
the number of bytes required

readString

public java.lang.String readString()
Read a String value. The current position is incremented.

Returns:
the value

writeString

public void writeString(java.lang.String s)
Write a String. The current position is incremented.

Parameters:
s - the value

create

public static Data create(DataHandler handler,
                          int capacity)
Create a new buffer for the given handler. The handler will decide what type of buffer is created.

Parameters:
handler - the data handler
capacity - the initial capacity of the buffer
Returns:
the buffer

create

public static Data create(DataHandler handler,
                          byte[] buff)
Create a new buffer using the given data for the given handler. The handler will decide what type of buffer is created.

Parameters:
handler - the data handler
buff - the data
Returns:
the buffer

length

public int length()
Get the current write position of this buffer, which is the current length.

Returns:
the length

getBytes

public byte[] getBytes()
Get the byte array used for this page.

Returns:
the byte array

reset

public void reset()
Set the position to 0.


write

public void write(byte[] buff,
                  int off,
                  int len)
Append a number of bytes to this buffer.

Parameters:
buff - the data
off - the offset in the data
len - the length in bytes

read

public void read(byte[] buff,
                 int off,
                 int len)
Copy a number of bytes to the given buffer from the current position. The current position is incremented accordingly.

Parameters:
buff - the output buffer
off - the offset in the output buffer
len - the number of bytes to copy

writeByte

public void writeByte(byte x)
Append one single byte.

Parameters:
x - the value

readByte

public byte readByte()
Read one single byte.

Returns:
the value

readLong

public long readLong()
Read a long value. This method reads two int values and combines them.

Returns:
the long value

writeLong

public void writeLong(long x)
Append a long value. This method writes two int values.

Parameters:
x - the value

writeValue

public void writeValue(Value v)
Append a value.

Parameters:
v - the value

readValue

public Value readValue()
Read a value.

Returns:
the value

getValueLen

public int getValueLen(Value v)
Calculate the number of bytes required to encode the given value.

Parameters:
v - the value
Returns:
the number of bytes required to store this value

setPos

public void setPos(int pos)
Set the current read / write position.

Parameters:
pos - the new position

writeShortInt

public void writeShortInt(int x)
Write a short integer at the current position. The current position is incremented.

Parameters:
x - the value

readShortInt

public short readShortInt()
Read an short integer at the current position. The current position is incremented.

Returns:
the value

truncate

public void truncate(int size)
Shrink the array to this size.

Parameters:
size - the new size

getVarIntLen

public static int getVarIntLen(int x)
The number of bytes required for a variable size int.

Parameters:
x - the value
Returns:
the len

writeVarInt

public void writeVarInt(int x)
Write a variable size int.

Parameters:
x - the value

readVarInt

public int readVarInt()
Read a variable size int.

Returns:
the value

getVarLongLen

public static int getVarLongLen(long x)
The number of bytes required for a variable size long.

Parameters:
x - the value
Returns:
the len

writeVarLong

public void writeVarLong(long x)
Write a variable size long.

Parameters:
x - the value

readVarLong

public long readVarLong()
Read a variable size long.

Returns:
the value

checkCapacity

public void checkCapacity(int plus)
Check if there is still enough capacity in the buffer. This method extends the buffer if required.

Parameters:
plus - the number of additional bytes required

fillAligned

public void fillAligned()
Fill up the buffer with empty space and an (initially empty) checksum until the size is a multiple of Constants.FILE_BLOCK_SIZE.