1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.xbill.DNS;
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.io.*;
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Implements common functionality for the many record types whose format
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * is a single name.
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Brian Wellington
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenabstract class SingleNameBase extends Record {
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate static final long serialVersionUID = -18595042501413L;
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected Name singleName;
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenSingleNameBase() {}
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenSingleNameBase(Name name, int type, int dclass, long ttl) {
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	super(name, type, dclass, ttl);
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenSingleNameBase(Name name, int type, int dclass, long ttl, Name singleName,
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	    String description)
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen{
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	super(name, type, dclass, ttl);
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	this.singleName = checkName(description, singleName);
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrFromWire(DNSInput in) throws IOException {
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	singleName = new Name(in);
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrdataFromString(Tokenizer st, Name origin) throws IOException {
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	singleName = st.getName(origin);
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
46d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenString
47d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrToString() {
48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	return singleName.toString();
49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected Name
52d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetSingleName() {
53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	return singleName;
54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid
57d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrToWire(DNSOutput out, Compression c, boolean canonical) {
58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	singleName.toWire(out, null, canonical);
59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
62