/* *******************************************
* Copyright (c) 2011
* HT srl, All rights reserved.
* Project : RCS, AndroidService
* File : DataBuffer.java
* Created : Apr 9, 2011
* Author : zeno
* *******************************************/
package com.android.dvci.util;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.IntBuffer;
/**
* The Class DataBuffer.
*/
public class DataBuffer {
/** The Constant TAG. */
private static final String TAG = "DataReadBuffer"; //$NON-NLS-1$
// ByteArrayInputStream input;
// DataInputStream databuffer;
/** The byte buffer. */
ByteBuffer byteBuffer;
/**
* Instantiates a new data buffer.
*
* @param buffer
* the buffer
* @param offset
* the offset
* @param length
* the length
*/
public DataBuffer(final byte[] buffer, final int offset, final int length) {
byteBuffer = ByteBuffer.wrap(buffer);
byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
byteBuffer.position(offset);
}
/**
* Instantiates a new data buffer.
*
* @param content
* the content
*/
public DataBuffer(final byte[] content) {
this(content, 0, content.length);
}
/**
* Read int.
*
* @return the int
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public final int readInt() throws IOException {
return byteBuffer.getInt();
}
/**
* Read long.
*
* @return the long
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public final long readLong() throws IOException {
return byteBuffer.getLong();
}
/**
* Read a byte array of the length of the buffer, and store it into it.
*
* @param buffer
* the buffer
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public final void read(final byte[] buffer) throws IOException {
byteBuffer.get(buffer);
}
public double readDouble() {
return byteBuffer.getDouble();
}
/**
* Write the data in the buffer.
*
* @param data
* the data
*/
public final void write(final byte[] data) {
byteBuffer.put(data);
}
/**
* Write int.
*
* @param value
* the value
*/
public final void writeInt(final int value) {
byteBuffer.putInt(value);
}
/**
* Write long.
*
* @param value
* the value
*/
public final void writeLong(final long value) {
byteBuffer.putLong(value);
}
public final void writeDouble(final double value) {
byteBuffer.putDouble(value);
}
public final void writeFloat(final float value) {
byteBuffer.putFloat(value);
}
public final void writeByte(final byte value) {
byteBuffer.put(value);
}
public final void writeShort(final short value) {
byteBuffer.putShort(value);
}
/**
* Gets the position.
*
* @return the position
*/
public final int getPosition() {
return byteBuffer.position();
}
public IntBuffer asIntBuffer() {
return byteBuffer.asIntBuffer();
}
}