// Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)
package io.milton.dns.record;

import io.milton.dns.Name;

import java.io.*;

/**
 * Implements common functionality for the many record types whose format is a
 * single name.
 *
 * @author Brian Wellington
 */
abstract class SingleNameBase extends Record {

	private static final long serialVersionUID = -18595042501413L;
	protected Name singleName;

	protected SingleNameBase() {
	}

	protected SingleNameBase(Name name, int type, int dclass, long ttl) {
		super(name, type, dclass, ttl);
	}

	protected SingleNameBase(Name name, int type, int dclass, long ttl, Name singleName,
			String description) {
		super(name, type, dclass, ttl);
		this.singleName = checkName(description, singleName);
	}

	void rrFromWire(DNSInput in) throws IOException {
		singleName = new Name(in);
	}

	void rdataFromString(Tokenizer st, Name origin) throws IOException {
		singleName = st.getName(origin);
	}

	String rrToString() {
		return singleName.toString();
	}

	protected Name getSingleName() {
		return singleName;
	}

	void rrToWire(DNSOutput out, Compression c, boolean canonical) {
		singleName.toWire(out, null, canonical);
	}
}
