1 // Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)
2
3 package org.xbill.DNS;
4
5 import java.io.*;
6
7 /**
8 * X.400 mail mapping record.
9 *
10 * @author Brian Wellington
11 */
12
13 public class PXRecord extends Record {
14
15 private static final long serialVersionUID = 1811540008806660667L;
16
17 private int preference;
18 private Name map822;
19 private Name mapX400;
20
PXRecord()21 PXRecord() {}
22
23 Record
getObject()24 getObject() {
25 return new PXRecord();
26 }
27
28 /**
29 * Creates an PX Record from the given data
30 * @param preference The preference of this mail address.
31 * @param map822 The RFC 822 component of the mail address.
32 * @param mapX400 The X.400 component of the mail address.
33 */
34 public
PXRecord(Name name, int dclass, long ttl, int preference, Name map822, Name mapX400)35 PXRecord(Name name, int dclass, long ttl, int preference,
36 Name map822, Name mapX400)
37 {
38 super(name, Type.PX, dclass, ttl);
39
40 this.preference = checkU16("preference", preference);
41 this.map822 = checkName("map822", map822);
42 this.mapX400 = checkName("mapX400", mapX400);
43 }
44
45 void
rrFromWire(DNSInput in)46 rrFromWire(DNSInput in) throws IOException {
47 preference = in.readU16();
48 map822 = new Name(in);
49 mapX400 = new Name(in);
50 }
51
52 void
rdataFromString(Tokenizer st, Name origin)53 rdataFromString(Tokenizer st, Name origin) throws IOException {
54 preference = st.getUInt16();
55 map822 = st.getName(origin);
56 mapX400 = st.getName(origin);
57 }
58
59 /** Converts the PX Record to a String */
60 String
rrToString()61 rrToString() {
62 StringBuffer sb = new StringBuffer();
63 sb.append(preference);
64 sb.append(" ");
65 sb.append(map822);
66 sb.append(" ");
67 sb.append(mapX400);
68 return sb.toString();
69 }
70
71 void
rrToWire(DNSOutput out, Compression c, boolean canonical)72 rrToWire(DNSOutput out, Compression c, boolean canonical) {
73 out.writeU16(preference);
74 map822.toWire(out, null, canonical);
75 mapX400.toWire(out, null, canonical);
76 }
77
78 /** Gets the preference of the route. */
79 public int
getPreference()80 getPreference() {
81 return preference;
82 }
83
84 /** Gets the RFC 822 component of the mail address. */
85 public Name
getMap822()86 getMap822() {
87 return map822;
88 }
89
90 /** Gets the X.400 component of the mail address. */
91 public Name
getMapX400()92 getMapX400() {
93 return mapX400;
94 }
95
96 }
97