package com.jds.jn_module.network.session;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
/**
* Author: VISTALL
* Company: J Develop Station
* Date: 3:08:08/04.04.2010
*/
public class PacketBuffer
{
private ByteBuffer _buf;
public PacketBuffer()
{
_buf = ByteBuffer.allocate(65535);
_buf.order(ByteOrder.LITTLE_ENDIAN);
}
public void putData(byte[] dat)
{
_buf.put(dat);
}
public int nextAvaliablePacket()
{
if (_buf.position() < 2)
{
return 0;
}
int size = _buf.getShort(0) & 0xFFFF;
if (size == 2)
{
_buf.position(0);
return 0;
}
if (size > _buf.position())
{
return 0;
}
return (size - 2);
}
public void getNextPacket(byte[] header, byte[] data)
{
_buf.limit(_buf.position());
_buf.position(0);
_buf.get(header);
_buf.get(data);
_buf.compact();
}
}