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  *   http://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.internal.SocketUtils;
20 import io.netty.util.concurrent.EventExecutor;
21 import io.netty.util.concurrent.Promise;
22
23 import java.net.InetAddress;
24 import java.net.UnknownHostException;
25 import java.util.Arrays;
26 import java.util.List;
27
28 /**
29  * A {@link InetNameResolver} that resolves using JDK's built-in domain name lookup mechanism.
30  * Note that this resolver performs a blocking name lookup from the caller thread.
31  */

32 public class DefaultNameResolver extends InetNameResolver {
33
34     public DefaultNameResolver(EventExecutor executor) {
35         super(executor);
36     }
37
38     @Override
39     protected void doResolve(String inetHost, Promise<InetAddress> promise) throws Exception {
40         try {
41             promise.setSuccess(SocketUtils.addressByName(inetHost));
42         } catch (UnknownHostException e) {
43             promise.setFailure(e);
44         }
45     }
46
47     @Override
48     protected void doResolveAll(String inetHost, Promise<List<InetAddress>> promise) throws Exception {
49         try {
50             promise.setSuccess(Arrays.asList(SocketUtils.allAddressesByName(inetHost)));
51         } catch (UnknownHostException e) {
52             promise.setFailure(e);
53         }
54     }
55 }
56