1 /*
2 * Copyright 2014 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
17 package io.netty.resolver;
18
19 import io.netty.util.concurrent.Future;
20 import io.netty.util.concurrent.Promise;
21
22 import java.io.Closeable;
23 import java.util.List;
24
25 /**
26 * Resolves an arbitrary string that represents the name of an endpoint into an address.
27 */
28 public interface NameResolver<T> extends Closeable {
29
30 /**
31 * Resolves the specified name into an address.
32 *
33 * @param inetHost the name to resolve
34 *
35 * @return the address as the result of the resolution
36 */
37 Future<T> resolve(String inetHost);
38
39 /**
40 * Resolves the specified name into an address.
41 *
42 * @param inetHost the name to resolve
43 * @param promise the {@link Promise} which will be fulfilled when the name resolution is finished
44 *
45 * @return the address as the result of the resolution
46 */
47 Future<T> resolve(String inetHost, Promise<T> promise);
48
49 /**
50 * Resolves the specified host name and port into a list of address.
51 *
52 * @param inetHost the name to resolve
53 *
54 * @return the list of the address as the result of the resolution
55 */
56 Future<List<T>> resolveAll(String inetHost);
57
58 /**
59 * Resolves the specified host name and port into a list of address.
60 *
61 * @param inetHost the name to resolve
62 * @param promise the {@link Promise} which will be fulfilled when the name resolution is finished
63 *
64 * @return the list of the address as the result of the resolution
65 */
66 Future<List<T>> resolveAll(String inetHost, Promise<List<T>> promise);
67
68 /**
69 * Closes all the resources allocated and used by this resolver.
70 */
71 @Override
72 void close();
73 }