1 /*
2 * Copyright 2015 The Netty Project
3 *
4 * The Netty Project licenses this file to you under the Apache License,
5 * version 2.0 (the "License"); you may not use this file except in compliance
6 * with the License. You may obtain a copy of the License at:
7 *
8 * https://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations
14 * under the License.
15 */
16 package io.netty5.handler.codec.dns;
17
18 import io.netty5.util.internal.UnstableApi;
19
20 /**
21 * A DNS resource record.
22 */
23 @UnstableApi
24 public interface DnsRecord {
25
26 /**
27 * DNS resource record class: {@code IN}
28 */
29 int CLASS_IN = 0x0001;
30
31 /**
32 * DNS resource record class: {@code CSNET}
33 */
34 int CLASS_CSNET = 0x0002;
35
36 /**
37 * DNS resource record class: {@code CHAOS}
38 */
39 int CLASS_CHAOS = 0x0003;
40
41 /**
42 * DNS resource record class: {@code HESIOD}
43 */
44 int CLASS_HESIOD = 0x0004;
45
46 /**
47 * DNS resource record class: {@code NONE}
48 */
49 int CLASS_NONE = 0x00fe;
50
51 /**
52 * DNS resource record class: {@code ANY}
53 */
54 int CLASS_ANY = 0x00ff;
55
56 /**
57 * Returns the name of this resource record.
58 */
59 String name();
60
61 /**
62 * Returns the type of this resource record.
63 */
64 DnsRecordType type();
65
66 /**
67 * Returns the class of this resource record.
68 *
69 * @return the class value, usually one of the following:
70 * <ul>
71 * <li>{@link #CLASS_IN}</li>
72 * <li>{@link #CLASS_CSNET}</li>
73 * <li>{@link #CLASS_CHAOS}</li>
74 * <li>{@link #CLASS_HESIOD}</li>
75 * <li>{@link #CLASS_NONE}</li>
76 * <li>{@link #CLASS_ANY}</li>
77 * </ul>
78 */
79 int dnsClass();
80
81 /**
82 * Returns the time to live after reading for this resource record.
83 */
84 long timeToLive();
85
86 /**
87 * Returns a copy of this record object.
88 * Immutable record objects may return themselves.
89 */
90 DnsRecord copy();
91 }