package edu.colostate.vchill.chill;
import edu.colostate.vchill.ChillDefines;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
/**
* Superclass of the various chill headers
*
* @author Jochen Deyke
* @version 2006-08-09
*/
public class ChillHeader {
public ChillHeaderHeader header;
public byte[] extraData;
/**
* Constructor called from subclasses.
* Need length from ChillHeaderHeader to know size of extraData.
*/
public ChillHeader(final ChillHeaderHeader header) {
this.header = header;
}
/**
* Constructor for using ChillHeader as a generic/unknown header
*/
public ChillHeader(final DataInput in, final ChillHeaderHeader header) throws IOException {
this(header);
assert this.header.headerLength < ChillDefines.MAX_HSK_SIZE : "Ridiculously long header - probably out of alignment";
in.readFully(this.extraData = new byte[header.headerLength - ChillHeaderHeader.BYTE_SIZE]); //account for length of HeaderHeader
}
/**
* Write this header (including ChillHeaderHeader) to a DataOutput.
* Subclasses should override this and insert their own data between
* the HeaderHeader and extraData
*/
public void write(final DataOutput out) throws IOException {
this.header.write(out);
out.write(this.extraData);
}
}