/* * ServerPacket.java * * Created on November 25, 2001, 11:23 AM */ package netrek.packets; import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.BufferUnderflowException; import java.util.logging.Logger; import java.util.logging.Level; /** * * @author jrichard */ public abstract class ServerPacket { /** Creates a new instance of ServerPacket */ public ServerPacket() { } public abstract byte getID(); // public abstract int getLength(); public abstract void scan(ByteBuffer buffer); protected void skipPadBytes(Buffer buffer, int amount) { try { buffer.position(buffer.position()+amount); } catch (IllegalArgumentException e) { Logger.global.log(Level.INFO, "buffer overflow moving up " + amount); Logger.global.log(Level.INFO, "currently at pos = " + buffer.position()); Logger.global.log(Level.INFO, "currently at mark = " + buffer.mark()); Logger.global.log(Level.INFO, "currently at limit = " + buffer.limit()); BufferUnderflowException bue = new BufferUnderflowException(); bue.initCause(e); } } // todo: consider moving this to a utility class protected String readString(ByteBuffer buffer, int numByte) { byte[] buf = new byte[16]; buffer.get(buf); int nullIndex=buf.length; for (int i=0, end=buf.length; i