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