aboutsummaryrefslogtreecommitdiff
path: root/src/org/xbill/DNS/ISDNRecord.java
blob: 8f9b629cdb485b7c097ce81b3be8f8ea7675d4fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)

package org.xbill.DNS;

import java.io.*;

/**
 * ISDN - identifies the ISDN number and subaddress associated with a name.
 *
 * @author Brian Wellington
 */

public class ISDNRecord extends Record {

private static final long serialVersionUID = -8730801385178968798L;

private byte [] address;
private byte [] subAddress;

ISDNRecord() {}

Record
getObject() {
	return new ISDNRecord();
}

/**
 * Creates an ISDN Record from the given data
 * @param address The ISDN number associated with the domain.
 * @param subAddress The subaddress, if any.
 * @throws IllegalArgumentException One of the strings is invalid.
 */
public
ISDNRecord(Name name, int dclass, long ttl, String address, String subAddress) {
	super(name, Type.ISDN, dclass, ttl);
	try {
		this.address = byteArrayFromString(address);
		if (subAddress != null)
			this.subAddress = byteArrayFromString(subAddress);
	}
	catch (TextParseException e) {
		throw new IllegalArgumentException(e.getMessage());
	}
}

void
rrFromWire(DNSInput in) throws IOException {
	address = in.readCountedString();
	if (in.remaining() > 0)
		subAddress = in.readCountedString();
}

void
rdataFromString(Tokenizer st, Name origin) throws IOException {
	try {
		address = byteArrayFromString(st.getString());
		Tokenizer.Token t = st.get();
		if (t.isString()) {
			subAddress = byteArrayFromString(t.value);
		} else {
			st.unget();
		}
	}
	catch (TextParseException e) {
		throw st.exception(e.getMessage());
	}
}

/**
 * Returns the ISDN number associated with the domain.
 */
public String
getAddress() {
	return byteArrayToString(address, false);
}

/**
 * Returns the ISDN subaddress, or null if there is none.
 */
public String
getSubAddress() {
	if (subAddress == null)
		return null;
	return byteArrayToString(subAddress, false);
}

void
rrToWire(DNSOutput out, Compression c, boolean canonical) {
	out.writeCountedString(address);
	if (subAddress != null)
		out.writeCountedString(subAddress);
}

String
rrToString() {
	StringBuffer sb = new StringBuffer();
	sb.append(byteArrayToString(address, true));
	if (subAddress != null) {
		sb.append(" ");
		sb.append(byteArrayToString(subAddress, true));
	}
	return sb.toString();
}

}