e848066cab
Motivation: So far, we relied on the domain name resolution mechanism provided by JDK. It served its purpose very well, but had the following shortcomings: - Domain name resolution is performed in a blocking manner. This becomes a problem when a user has to connect to thousands of different hosts. e.g. web crawlers - It is impossible to employ an alternative cache/retry policy. e.g. lower/upper bound in TTL, round-robin - It is impossible to employ an alternative name resolution mechanism. e.g. Zookeeper-based name resolver Modification: - Add the resolver API in the new module: netty-resolver - Implement the DNS-based resolver: netty-resolver-dns .. which uses netty-codec-dns - Make ChannelFactory reusable because it's now used by io.netty.bootstrap, io.netty.resolver.dns, and potentially by other modules in the future - Move ChannelFactory from io.netty.bootstrap to io.netty.channel - Deprecate the old ChannelFactory - Add ReflectiveChannelFactory Result: It is trivial to resolve a large number of domain names asynchronously.
29 lines
952 B
Java
29 lines
952 B
Java
/*
|
|
* Copyright 2014 The Netty Project
|
|
*
|
|
* The Netty Project licenses this file to you under the Apache License,
|
|
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at:
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
package io.netty.channel;
|
|
|
|
/**
|
|
* Creates a new {@link Channel}.
|
|
*/
|
|
@SuppressWarnings({ "ClassNameSameAsAncestorName", "deprecation" })
|
|
public interface ChannelFactory<T extends Channel> extends io.netty.bootstrap.ChannelFactory<T> {
|
|
/**
|
|
* Creates a new channel.
|
|
*/
|
|
@Override
|
|
T newChannel();
|
|
}
|