@Override public UnknownTcpOption build() { return new UnknownTcpOption(this); } }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("[Kind: ") .append(kind) .append("] [Length: ") .append(getLengthAsInt()) .append(" bytes] [Data: 0x") .append(ByteArrays.toHexString(data, "")) .append("]"); return sb.toString(); }
@Override public byte[] getRawData() { byte[] rawData = new byte[length()]; rawData[0] = kind.value(); rawData[1] = length; System.arraycopy(data, 0, rawData, 2, data.length); return rawData; }
@Override public TcpOption newInstance(byte[] rawData, int offset, int length) { try { return UnknownTcpOption.newInstance(rawData, offset, length); } catch (IllegalRawDataException e) { return IllegalTcpOption.newInstance(rawData, offset, length); } }
@Override public TcpOption newInstance(byte[] rawData, int offset, int length) { try { return UnknownTcpOption.newInstance(rawData, offset, length); } catch (IllegalRawDataException e) { return IllegalTcpOption.newInstance(rawData, offset, length); } }
/** * 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 UnknownTcpOption object. * @throws IllegalRawDataException if parsing the raw data fails. */ public static UnknownTcpOption newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { ByteArrays.validateBounds(rawData, offset, length); return new UnknownTcpOption(rawData, offset, length); }
private UnknownTcpOption(Builder builder) { if (builder == null || builder.kind == null || builder.data == null) { StringBuilder sb = new StringBuilder(); sb.append("builder: ") .append(builder) .append(" builder.kind: ") .append(builder.kind) .append(" builder.data: ") .append(builder.data); throw new NullPointerException(sb.toString()); } this.kind = builder.kind; this.data = new byte[builder.data.length]; System.arraycopy(builder.data, 0, this.data, 0, builder.data.length); if (builder.correctLengthAtBuild) { this.length = (byte) length(); } else { this.length = builder.length; } }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("[Kind: ") .append(kind) .append("] [Length: ") .append(getLengthAsInt()) .append(" bytes] [Data: 0x") .append(ByteArrays.toHexString(data, "")) .append("]"); return sb.toString(); }
@Override public UnknownTcpOption build() { return new UnknownTcpOption(this); } }
@Override public byte[] getRawData() { byte[] rawData = new byte[length()]; rawData[0] = kind.value(); rawData[1] = length; System.arraycopy(data, 0, rawData, 2, data.length); return rawData; }
/** * 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 UnknownTcpOption object. * @throws IllegalRawDataException if parsing the raw data fails. */ public static UnknownTcpOption newInstance(byte[] rawData, int offset, int length) throws IllegalRawDataException { ByteArrays.validateBounds(rawData, offset, length); return new UnknownTcpOption(rawData, offset, length); }
private UnknownTcpOption(Builder builder) { if (builder == null || builder.kind == null || builder.data == null) { StringBuilder sb = new StringBuilder(); sb.append("builder: ") .append(builder) .append(" builder.kind: ") .append(builder.kind) .append(" builder.data: ") .append(builder.data); throw new NullPointerException(sb.toString()); } this.kind = builder.kind; this.data = new byte[builder.data.length]; System.arraycopy(builder.data, 0, this.data, 0, builder.data.length); if (builder.correctLengthAtBuild) { this.length = (byte) length(); } else { this.length = builder.length; } }