package com.aionemu.packetsamurai.protocol.protocoltree; import java.util.List; import com.aionemu.packetsamurai.parser.PartType; import javolution.util.FastList; /** * This class represents a ProtocolNode, either a {@link PacketFormat} or {@link PacketFamilly} * @author Gilles Duboscq * */ public abstract class ProtocolNode { private List<Integer> _ids = new FastList<Integer>(); private List<PartType> _idParts = new FastList<PartType>(); public ProtocolNode(int id) { _ids.add(id); } public ProtocolNode() { // } public int getID() { return _ids.get(_ids.size()-1); } public List<Integer> getIDs() { return _ids; } public List<PartType> getIdParts() { return _idParts; } public void addIdPartAtEnd(PartType part) { _idParts.add(part); } public void addIdPartsAtBegining(List<PartType> parts, List<Integer> values) { _idParts.addAll(0,parts); _ids.addAll(0,values); if(this instanceof PacketFamilly) { for(ProtocolNode n :((PacketFamilly)this).getNodes().values()) { n.addIdPartsAtBegining(parts, new FastList<Integer>()); } } } @Override public String toString() { return "ProtocolNode: ID: "+this.getID(); } }