/** * @param value value * @return a DnsResourceRecordType object. */ public static DnsResourceRecordType getInstance(Short value) { if (registry.containsKey(value)) { return registry.get(value); } else { return new DnsResourceRecordType(value, "unknown"); } }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } DnsResourceRecord that = (DnsResourceRecord) o; if (ttl != that.ttl) { return false; } if (rdLength != that.rdLength) { return false; } if (!name.equals(that.name)) { return false; } if (!dataType.equals(that.dataType)) { return false; } if (!dataClass.equals(that.dataClass)) { return false; } return rData != null ? rData.equals(that.rData) : that.rData == null; }
private DnsQuestion(byte[] rawData, int offset, int length) throws IllegalRawDataException { int cursor = 0; this.qName = DnsDomainName.newInstance(rawData, offset, length); cursor += qName.length(); if (length - cursor < SHORT_SIZE_IN_BYTES * 2) { StringBuilder sb = new StringBuilder(200); sb.append("The data is too short to build qType an qClass of DnsQuestion. data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length) .append(", cursor: ") .append(cursor); throw new IllegalRawDataException(sb.toString()); } this.qType = DnsResourceRecordType.getInstance(ByteArrays.getShort(rawData, offset + cursor)); cursor += SHORT_SIZE_IN_BYTES; this.qClass = DnsClass.getInstance(ByteArrays.getShort(rawData, offset + cursor)); }
@Override public String valueAsString() { return String.valueOf(value() & 0xFFFF); }
@Override public int hashCode() { int result = name.hashCode(); result = 31 * result + dataType.hashCode(); result = 31 * result + dataClass.hashCode(); result = 31 * result + ttl; result = 31 * result + (int) rdLength; result = 31 * result + (rData != null ? rData.hashCode() : 0); return result; }
/** * @param type type * @return a class which implements DnsRData for a specified type. */ public Class<? extends DnsRData> getDnsRDataClass(DnsResourceRecordType type) { StringBuilder sb = new StringBuilder(120); sb.append(DNS_RDATA_CLASS_KEY_BASE) .append(type.getClass().getName()) .append(".") .append(type.valueAsString()); return loader.<DnsRData>getClass(sb.toString(), getUnknownDnsRDataClass()); }
/** * @param type type * @return a DnsResourceRecordType object. */ public static DnsResourceRecordType register(DnsResourceRecordType type) { return registry.put(type.value(), type); }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + qClass.hashCode(); result = prime * result + qName.hashCode(); result = prime * result + qType.hashCode(); return result; }
/** * @param type type * @return a class which implements DnsRData for a specified type. */ public Class<? extends DnsRData> getDnsRDataClass(DnsResourceRecordType type) { StringBuilder sb = new StringBuilder(120); sb.append(DNS_RDATA_CLASS_KEY_BASE) .append(type.getClass().getName()) .append(".") .append(type.valueAsString()); return loader.<DnsRData>getClass(sb.toString(), getUnknownDnsRDataClass()); }
@Override public int hashCode() { int result = name.hashCode(); result = 31 * result + dataType.hashCode(); result = 31 * result + dataClass.hashCode(); result = 31 * result + ttl; result = 31 * result + (int) rdLength; result = 31 * result + (rData != null ? rData.hashCode() : 0); return result; }
DnsResourceRecordType.getInstance(ByteArrays.getShort(rawData, offset + cursor)); cursor += SHORT_SIZE_IN_BYTES; this.dataClass = DnsClass.getInstance(ByteArrays.getShort(rawData, offset + cursor));
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } DnsQuestion other = (DnsQuestion) obj; if (!qClass.equals(other.qClass)) { return false; } if (!qName.equals(other.qName)) { return false; } if (!qType.equals(other.qType)) { return false; } return true; }
/** * @param value value * @return a DnsResourceRecordType object. */ public static DnsResourceRecordType getInstance(Short value) { if (registry.containsKey(value)) { return registry.get(value); } else { return new DnsResourceRecordType(value, "unknown"); } }
/** @return the raw data. */ public byte[] getRawData() { byte[] data = new byte[length()]; int cursor = 0; byte[] rawQName = qName.getRawData(); System.arraycopy(rawQName, 0, data, 0, rawQName.length); cursor += rawQName.length; System.arraycopy(ByteArrays.toByteArray(qType.value()), 0, data, cursor, SHORT_SIZE_IN_BYTES); cursor += SHORT_SIZE_IN_BYTES; System.arraycopy(ByteArrays.toByteArray(qClass.value()), 0, data, cursor, SHORT_SIZE_IN_BYTES); return data; }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + qClass.hashCode(); result = prime * result + qName.hashCode(); result = prime * result + qType.hashCode(); return result; }
private DnsQuestion(byte[] rawData, int offset, int length) throws IllegalRawDataException { int cursor = 0; this.qName = DnsDomainName.newInstance(rawData, offset, length); cursor += qName.length(); if (length - cursor < SHORT_SIZE_IN_BYTES * 2) { StringBuilder sb = new StringBuilder(200); sb.append("The data is too short to build qType an qClass of DnsQuestion. data: ") .append(ByteArrays.toHexString(rawData, " ")) .append(", offset: ") .append(offset) .append(", length: ") .append(length) .append(", cursor: ") .append(cursor); throw new IllegalRawDataException(sb.toString()); } this.qType = DnsResourceRecordType.getInstance(ByteArrays.getShort(rawData, offset + cursor)); cursor += SHORT_SIZE_IN_BYTES; this.qClass = DnsClass.getInstance(ByteArrays.getShort(rawData, offset + cursor)); }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } DnsQuestion other = (DnsQuestion) obj; if (!qClass.equals(other.qClass)) { return false; } if (!qName.equals(other.qName)) { return false; } if (!qType.equals(other.qType)) { return false; } return true; }
/** @return the raw data. */ public byte[] getRawData() { byte[] data = new byte[length()]; int cursor = 0; byte[] rawName = name.getRawData(); System.arraycopy(rawName, 0, data, 0, rawName.length); cursor += rawName.length; System.arraycopy( ByteArrays.toByteArray(dataType.value()), 0, data, cursor, SHORT_SIZE_IN_BYTES); cursor += SHORT_SIZE_IN_BYTES; System.arraycopy( ByteArrays.toByteArray(dataClass.value()), 0, data, cursor, SHORT_SIZE_IN_BYTES); cursor += SHORT_SIZE_IN_BYTES; System.arraycopy(ByteArrays.toByteArray(ttl), 0, data, cursor, INT_SIZE_IN_BYTES); cursor += INT_SIZE_IN_BYTES; System.arraycopy(ByteArrays.toByteArray(rdLength), 0, data, cursor, SHORT_SIZE_IN_BYTES); if (rData != null) { cursor += SHORT_SIZE_IN_BYTES; byte[] rawRData = rData.getRawData(); System.arraycopy(rawRData, 0, data, cursor, rawRData.length); } return data; }
DnsResourceRecordType.getInstance(ByteArrays.getShort(rawData, offset + cursor)); cursor += SHORT_SIZE_IN_BYTES; this.dataClass = DnsClass.getInstance(ByteArrays.getShort(rawData, offset + cursor));