// Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)
package org.xbill.DNS;
import java.io.*;
/**
* Implements common functionality for the many record types whose format
* is an unsigned 16 bit integer followed by a name.
*
* @author Brian Wellington
*/
abstract class U16NameBase extends Record {
private static final long serialVersionUID = -8315884183112502995L;
protected int u16Field;
protected Name nameField;
protected
U16NameBase() {}
protected
U16NameBase(Name name, int type, int dclass, long ttl) {
super(name, type, dclass, ttl);
}
protected
U16NameBase(Name name, int type, int dclass, long ttl, int u16Field,
String u16Description, Name nameField, String nameDescription)
{
super(name, type, dclass, ttl);
this.u16Field = checkU16(u16Description, u16Field);
this.nameField = checkName(nameDescription, nameField);
}
void
rrFromWire(DNSInput in) throws IOException {
u16Field = in.readU16();
nameField = new Name(in);
}
void
rdataFromString(Tokenizer st, Name origin) throws IOException {
u16Field = st.getUInt16();
nameField = st.getName(origin);
}
String
rrToString() {
StringBuffer sb = new StringBuffer();
sb.append(u16Field);
sb.append(" ");
sb.append(nameField);
return sb.toString();
}
protected int
getU16Field() {
return u16Field;
}
protected Name
getNameField() {
return nameField;
}
void
rrToWire(DNSOutput out, Compression c, boolean canonical) {
out.writeU16(u16Field);
nameField.toWire(out, null, canonical);
}
}