1// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org)
2
3package org.xbill.DNS;
4
5import java.io.*;
6
7/**
8 * Host Information - describes the CPU and OS of a host
9 *
10 * @author Brian Wellington
11 */
12
13public class HINFORecord extends Record {
14
15private static final long serialVersionUID = -4732870630947452112L;
16
17private byte [] cpu, os;
18
19HINFORecord() {}
20
21Record
22getObject() {
23	return new HINFORecord();
24}
25
26/**
27 * Creates an HINFO Record from the given data
28 * @param cpu A string describing the host's CPU
29 * @param os A string describing the host's OS
30 * @throws IllegalArgumentException One of the strings has invalid escapes
31 */
32public
33HINFORecord(Name name, int dclass, long ttl, String cpu, String os) {
34	super(name, Type.HINFO, dclass, ttl);
35	try {
36		this.cpu = byteArrayFromString(cpu);
37		this.os = byteArrayFromString(os);
38	}
39	catch (TextParseException e) {
40		throw new IllegalArgumentException(e.getMessage());
41	}
42}
43
44void
45rrFromWire(DNSInput in) throws IOException {
46	cpu = in.readCountedString();
47	os = in.readCountedString();
48}
49
50void
51rdataFromString(Tokenizer st, Name origin) throws IOException {
52	try {
53		cpu = byteArrayFromString(st.getString());
54		os = byteArrayFromString(st.getString());
55	}
56	catch (TextParseException e) {
57		throw st.exception(e.getMessage());
58	}
59}
60
61/**
62 * Returns the host's CPU
63 */
64public String
65getCPU() {
66	return byteArrayToString(cpu, false);
67}
68
69/**
70 * Returns the host's OS
71 */
72public String
73getOS() {
74	return byteArrayToString(os, false);
75}
76
77void
78rrToWire(DNSOutput out, Compression c, boolean canonical) {
79	out.writeCountedString(cpu);
80	out.writeCountedString(os);
81}
82
83/**
84 * Converts to a string
85 */
86String
87rrToString() {
88	StringBuffer sb = new StringBuffer();
89	sb.append(byteArrayToString(cpu, true));
90	sb.append(" ");
91	sb.append(byteArrayToString(os, true));
92	return sb.toString();
93}
94
95}
96