@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } IllegalIpV6NeighborDiscoveryOption other = (IllegalIpV6NeighborDiscoveryOption) obj; return type.equals(other.type) && Arrays.equals(other.rawData, rawData); }
throw new IllegalRawDataException(sb.toString()); if (rawData[TYPE_OFFSET + offset] != getType().value()) { StringBuilder sb = new StringBuilder(100); sb.append("The type must be: ") .append(getType().valueAsString()) .append(" rawData: ") .append(ByteArrays.toHexString(rawData, " "))
/** * @param value value * @return a IpV6NeighborDiscoveryOptionType object. */ public static IpV6NeighborDiscoveryOptionType getInstance(Byte value) { if (registry.containsKey(value)) { return registry.get(value); } else { return new IpV6NeighborDiscoveryOptionType(value, "unknown"); } }
/** */ @Override public String valueAsString() { return String.valueOf(value() & 0xFF); } }
private IllegalIpV6NeighborDiscoveryOption(byte[] rawData, int offset, int length) { this.type = IpV6NeighborDiscoveryOptionType.getInstance(rawData[offset]); this.rawData = new byte[length]; System.arraycopy(rawData, offset, this.rawData, 0, length); }
/** * @param type type * @return a class which implements IpV6NeighborDiscoveryOption for a specified type. */ public Class<? extends IpV6NeighborDiscoveryOption> getIpV6NeighborDiscoveryOptionClass( IpV6NeighborDiscoveryOptionType type) { StringBuilder sb = new StringBuilder(120); sb.append(IPV6_NEIGHBOR_DISCOVERY_OPTION_CLASS_KEY_BASE) .append(type.getClass().getName()) .append(".") .append(type.valueAsString()); return loader.<IpV6NeighborDiscoveryOption>getClass( sb.toString(), getUnknownIpV6NeighborDiscoveryOptionClass()); }
@Override public int hashCode() { int result = 17; result = 31 * result + type.hashCode(); result = 31 * result + Arrays.hashCode(rawData); return result; }
/** * @param type type * @return a IpV6NeighborDiscoveryOptionType object. */ public static IpV6NeighborDiscoveryOptionType register(IpV6NeighborDiscoveryOptionType type) { return registry.put(type.value(), type); }
private UnknownIpV6NeighborDiscoveryOption(byte[] rawData, int offset, int length) throws IllegalRawDataException { if (length < 2) { StringBuilder sb = new StringBuilder(100); sb.append("The raw data length must be more than 1. rawData: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.type = IpV6NeighborDiscoveryOptionType.getInstance(rawData[offset]); this.length = rawData[1 + offset]; if (length < this.length * 8) { StringBuilder sb = new StringBuilder(100); sb.append("The raw data is too short to build this option(") .append(this.length * 8) .append("). data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length); throw new IllegalRawDataException(sb.toString()); } this.data = ByteArrays.getSubArray(rawData, 2 + offset, this.length * 8 - 2); }
/** * @param type type * @return a class which implements IpV6NeighborDiscoveryOption for a specified type. */ public Class<? extends IpV6NeighborDiscoveryOption> getIpV6NeighborDiscoveryOptionClass( IpV6NeighborDiscoveryOptionType type) { StringBuilder sb = new StringBuilder(120); sb.append(IPV6_NEIGHBOR_DISCOVERY_OPTION_CLASS_KEY_BASE) .append(type.getClass().getName()) .append(".") .append(type.valueAsString()); return loader.<IpV6NeighborDiscoveryOption>getClass( sb.toString(), getUnknownIpV6NeighborDiscoveryOptionClass()); }
@Override public int hashCode() { int result = 17; result = 31 * result + type.hashCode(); result = 31 * result + length; result = 31 * result + Arrays.hashCode(data); return result; }
throw new IllegalRawDataException(sb.toString()); if (rawData[TYPE_OFFSET + offset] != getType().value()) { StringBuilder sb = new StringBuilder(100); sb.append("The type must be: ") .append(getType().valueAsString()) .append(" rawData: ") .append(ByteArrays.toHexString(rawData, " "))
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } UnknownIpV6NeighborDiscoveryOption other = (UnknownIpV6NeighborDiscoveryOption) obj; return type.equals(other.type) && length == other.length && Arrays.equals(data, other.data); }
while (currentOffsetInHeader < length) { IpV6NeighborDiscoveryOptionType type = IpV6NeighborDiscoveryOptionType.getInstance(rawData[currentOffsetInHeader + offset]); IpV6NeighborDiscoveryOption newOne; try {
@Override public int hashCode() { int result = 17; result = 31 * result + type.hashCode(); result = 31 * result + length; result = 31 * result + Arrays.hashCode(data); return result; }
/** * @param value value * @return a IpV6NeighborDiscoveryOptionType object. */ public static IpV6NeighborDiscoveryOptionType getInstance(Byte value) { if (registry.containsKey(value)) { return registry.get(value); } else { return new IpV6NeighborDiscoveryOptionType(value, "unknown"); } }
throw new IllegalRawDataException(sb.toString()); if (rawData[TYPE_OFFSET + offset] != getType().value()) { StringBuilder sb = new StringBuilder(100); sb.append("The type must be: ") .append(getType().valueAsString()) .append(" rawData: ") .append(ByteArrays.toHexString(rawData, " "))
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!this.getClass().isInstance(obj)) { return false; } IllegalIpV6NeighborDiscoveryOption other = (IllegalIpV6NeighborDiscoveryOption) obj; return type.equals(other.type) && Arrays.equals(other.rawData, rawData); }
@Override public byte[] getRawData() { byte[] rawData = new byte[length()]; rawData[0] = type.value(); rawData[1] = length; System.arraycopy(data, 0, rawData, 2, data.length); return rawData; }