package se.rhel.packet; import se.rhel.observer.IObserver; import se.rhel.util.Log; import java.lang.reflect.InvocationTargetException; import java.nio.ByteBuffer; /** * Created by rkh on 2014-03-05. */ public abstract class BasePacketHandler { protected Class mClassType; protected IObserver mObserver; protected Object mObj; protected Packet mUnknownPacket; public void handlePacket(byte[] data) { if(data[0] == -118) { System.out.println(); } if(data[0] == 0) { throw new IllegalArgumentException("Packet missing id"); } mUnknownPacket = new Packet(data) { @Override public byte getPacketId() { return super.getPacketId(); } }; mClassType = PacketManager.getInstance().getPacketType(mUnknownPacket.getPacketId()); try { //mObj = mClassType.newInstance(); mObj = mClassType.getConstructor(byte[].class).newInstance(data); } catch (InstantiationException e) { Log.error("BasePacketHandler", "No default constructor found in " + mClassType); System.exit(1); } catch (IllegalAccessException e) { e.printStackTrace(); System.exit(1); } catch (NoSuchMethodException e) { e.printStackTrace(); System.exit(1); } catch (InvocationTargetException e) { e.printStackTrace(); System.exit(1); } } public void setObserver(IObserver obs) { mObserver = obs; } }