|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.jlab.coda.jevio.BlockHeaderV2
public class BlockHeaderV2
This holds a evio block header, also known as a physical record header.
Unfortunately, in versions 1, 2 & 3, evio files impose an anachronistic
block structure. The complication that arises is that logical records
(events) will sometimes cross physical record boundaries.
####################################
Evio block header, versions 1,2 & 3:
####################################
MSB(31) LSB(0)
<--- 32 bits ------------------------>
_______________________________________
| Block Length |
|_____________________________________|
| Block Number |
|_____________________________________|
| Header Length = 8 |
|_____________________________________|
| Start |
|_____________________________________|
| End |
|_____________________________________|
| Version |
|_____________________________________|
| Reserved 1 |
|_____________________________________|
| Magic Number |
|_____________________________________|
Block Length = number of ints in block (including this one).
This is fixed for versions 1-3, generally at 8192 (32768 bytes)
Block Number = id number
Header Length = number of ints in this header (always 8)
Start = offset to first event header in block relative to start of block
End = # of valid words (header + data) in block (normally = block size)
Version = evio format version
Reserved 1 = reserved
Magic # = magic number (0xc0da0100) used to check endianness
Field Summary | |
---|---|
static int |
MAX_BLOCK_SIZE
The maximum block size in 32 bit ints in this implementation of evio. |
Fields inherited from interface org.jlab.coda.jevio.IBlockHeader |
---|
MAGIC_NUMBER |
Constructor Summary | |
---|---|
BlockHeaderV2()
Null constructor initializes all fields to zero. |
|
BlockHeaderV2(BlockHeaderV2 blkHeader)
This copy constructor creates an evio version 1-3 BlockHeader from another object of this class. |
|
BlockHeaderV2(int size,
int number)
Creates a BlockHeader for evio versions 1-3 format. |
Method Summary | |
---|---|
int |
bytesRemaining(int position)
Gives the bytes remaining in this block (physical record) given a buffer position. |
java.lang.Object |
clone()
|
int |
firstEventStartingPosition()
Determines where the start of the first event (logical record) in this block (physical record) is located (in bytes). |
int |
getBufferEndingPosition()
Get the position in the buffer (in bytes) of this block's last data word. |
int |
getBufferStartingPosition()
Get the starting position in the buffer (in bytes) from which this header was read--if that happened. This is not part of the block header proper. |
int |
getEnd()
Get the ending position of the block (physical record.) This is the number of valid words (header + data) in the block (physical record.) This is normally the same as the block size, except for the last block (physical record) in the file. NOTE: for evio files, even if end < size (blocksize) for the last block (physical record), the data behind it will be padded with zeroes so that the file size is an integer multiple of the block size. |
int |
getHeaderLength()
Get the block header length, in ints. |
int |
getMagicNumber()
Get the magic number the block (physical record) header which should be 0xc0da0100. |
int |
getNumber()
Get the block number for this block (physical record). |
int |
getReserved1()
Get the first reserved word in the block (physical record) header. |
int |
getSize()
Get the size of the block (physical record). |
int |
getStart()
Get the starting position of the block (physical record.). |
int |
getVersion()
Get the evio version of the block (physical record) header. |
boolean |
hasDictionary()
Gets whether this block's first event is an evio dictionary. |
boolean |
isLastBlock()
Is this the last block in the file or being sent over the network? This is not implemented in evio versions 1-3. |
int |
nextBufferStartingPosition()
Determines where the start of the next block (physical record) header in some buffer is located (in bytes). |
void |
setBufferStartingPosition(int bufferStartingPosition)
Set the starting position in the buffer (in bytes) from which this header was read--if that happened. This is not part of the block header proper. |
void |
setEnd(int end)
Set the ending position of the block (physical record.) This is the number of valid words (header + data) in the block (physical record.) This is normally the same as the block size, except for the last block (physical record) in the file. |
void |
setHeaderLength(int headerLength)
Set the block header length, in ints. |
void |
setMagicNumber(int magicNumber)
Sets the value of magicNumber. |
void |
setNumber(int number)
Set the block number for this block (physical record). |
void |
setReserved1(int reserved1)
Sets the value of reserved 1. |
void |
setSize(int size)
Set the size of the block (physical record). |
void |
setStart(int start)
Set the starting position of the block (physical record.). |
void |
setVersion(int version)
Sets the evio version. |
java.lang.String |
toString()
Obtain a string representation of the block (physical record) header. |
int |
write(java.nio.ByteBuffer byteBuffer)
Write myself out a byte buffer. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final int MAX_BLOCK_SIZE
Constructor Detail |
---|
public BlockHeaderV2()
public BlockHeaderV2(int size, int number)
block size
and block number
are provided. The other six words, which can be
modified by setters, are initialized to these values:headerLength
is initialized to 8start
is initialized to 8end
is initialized to size
version
is initialized to 2reserved1
is initialized to 0magicNumber
is initialized to MAGIC_NUMBER
size
- the size of the block in ints.number
- the block number--usually sequential.public BlockHeaderV2(BlockHeaderV2 blkHeader)
blkHeader
- block header object to copyMethod Detail |
---|
public int getSize()
getSize
in interface IBlockHeader
public java.lang.Object clone()
clone
in class java.lang.Object
public boolean hasDictionary()
hasDictionary
in interface IBlockHeader
public boolean isLastBlock()
isLastBlock
in interface IBlockHeader
public void setSize(int size) throws EvioException
size
- the new value for the size, in ints.
EvioException
public int getStart()
start = 0
.
NOTE: a logical record (event) that spans three blocks (physical records) will have start = 0
.
public void setStart(int start) throws EvioException
start = 0
.
NOTE: a logical record (event) that spans three blocks (physical records) will have start = 0
.
start
- the new value for the start.
EvioException
public int getEnd()
public void setEnd(int end) throws EvioException
end
- the new value for the end.
EvioException
public int getNumber()
getNumber
in interface IBlockHeader
public void setNumber(int number)
number
- the number of the block (physical record).public int getHeaderLength()
getHeaderLength
in interface IBlockHeader
public void setHeaderLength(int headerLength) throws EvioException
EvioException
- if headerLength is not 8.public int getVersion()
getVersion
in interface IBlockHeader
public void setVersion(int version)
EvioFile.nextBlockHeader()
.
version
- the evio version of evio.public int getReserved1()
public void setReserved1(int reserved1)
reserved1
- the value for reserved1.public int getMagicNumber()
getMagicNumber
in interface IBlockHeader
public void setMagicNumber(int magicNumber) throws EvioException
magicNumber
- the new value for magic number.
EvioException
public java.lang.String toString()
toString
in interface IBlockHeader
toString
in class java.lang.Object
public int getBufferEndingPosition()
getBufferEndingPosition
in interface IBlockHeader
public int getBufferStartingPosition()
getBufferStartingPosition
in interface IBlockHeader
public void setBufferStartingPosition(int bufferStartingPosition)
setBufferStartingPosition
in interface IBlockHeader
bufferStartingPosition
- the starting position in the buffer from which this header was read--if that
happened.public int nextBufferStartingPosition()
nextBufferStartingPosition
in interface IBlockHeader
public int firstEventStartingPosition()
firstEventStartingPosition
in interface IBlockHeader
public int bytesRemaining(int position) throws EvioException
bufferStartingPosition
is
being maintained properly by the reader.
bytesRemaining
in interface IBlockHeader
position
- the absolute current position is a byte buffer.
EvioException
public int write(java.nio.ByteBuffer byteBuffer)
write
in interface IBlockHeader
write
in interface IEvioWriter
byteBuffer
- the byteBuffer to write to.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |