private Builder(IcmpV6ParameterProblemPacket packet) { super(packet); this.pointer = packet.getHeader().pointer; }
@Override public Packet newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { return IcmpV6ParameterProblemPacket.newPacket(rawData, offset, length); }
@Override public IcmpV6ParameterProblemPacket build() { return new IcmpV6ParameterProblemPacket(this); } }
@Test public void testNewPacket() { IcmpV6ParameterProblemPacket p; try { p = IcmpV6ParameterProblemPacket.newPacket( packet.getRawData(), 0, packet.getRawData().length); } catch (IllegalRawDataException e) { throw new AssertionError(e); } assertEquals(packet, p); assertTrue(p.getPayload().contains(IpV6Packet.class)); assertTrue(p.getPayload().contains(IcmpV6CommonPacket.class)); assertTrue(p.getPayload().contains(IcmpV6EchoRequestPacket.class)); assertTrue(p.getPayload().contains(UnknownPacket.class)); assertEquals(p.getPayload().get(UnknownPacket.class).length(), 3); assertFalse(p.getPayload().contains(IllegalPacket.class)); }
@Test public void testGetHeader() { IcmpV6ParameterProblemHeader h = packet.getHeader(); assertEquals(pointer, h.getPointer()); IcmpV6ParameterProblemPacket.Builder b = packet.getBuilder(); IcmpV6ParameterProblemPacket p; b.pointer(0); p = b.build(); assertEquals(0, (int) p.getHeader().getPointerAsLong()); b.pointer(2147483647); p = b.build(); assertEquals(2147483647, (int) p.getHeader().getPointerAsLong()); b.pointer(-1); p = b.build(); assertEquals(-1, (int) p.getHeader().getPointerAsLong()); b.pointer(-2147483648); p = b.build(); assertEquals(-2147483648, (int) p.getHeader().getPointerAsLong()); } }
@Override public Packet newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { return IcmpV6ParameterProblemPacket.newPacket(rawData, offset, length); }
private Builder(IcmpV6ParameterProblemPacket packet) { super(packet); this.pointer = packet.getHeader().pointer; }
/** * A static factory method. This method validates the arguments by {@link * ByteArrays#validateBounds(byte[], int, int)}, which may throw exceptions undocumented here. * * @param rawData rawData * @param offset offset * @param length length * @return a new IcmpV6ParameterProblemPacket object. * @throws IllegalRawDataException if parsing the raw data fails. */ public static IcmpV6ParameterProblemPacket newPacket(byte[] rawData, int offset, int length) throws IllegalRawDataException { ByteArrays.validateBounds(rawData, offset, length); IcmpV6ParameterProblemHeader header = new IcmpV6ParameterProblemHeader(rawData, offset, length); int payloadLength = length - header.length(); if (payloadLength > 0) { return new IcmpV6ParameterProblemPacket( header, rawData, offset + header.length(), payloadLength); } else { return new IcmpV6ParameterProblemPacket(header); } }
@Override public IcmpV6ParameterProblemPacket build() { return new IcmpV6ParameterProblemPacket(this); } }
/** * A static factory method. This method validates the arguments by {@link * ByteArrays#validateBounds(byte[], int, int)}, which may throw exceptions undocumented here. * * @param rawData rawData * @param offset offset * @param length length * @return a new IcmpV6ParameterProblemPacket object. * @throws IllegalRawDataException if parsing the raw data fails. */ public static IcmpV6ParameterProblemPacket newPacket(byte[] rawData, int offset, int length) throws IllegalRawDataException { ByteArrays.validateBounds(rawData, offset, length); IcmpV6ParameterProblemHeader header = new IcmpV6ParameterProblemHeader(rawData, offset, length); int payloadLength = length - header.length(); if (payloadLength > 0) { return new IcmpV6ParameterProblemPacket( header, rawData, offset + header.length(), payloadLength); } else { return new IcmpV6ParameterProblemPacket(header); } }