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 17 package io.netty.resolver.dns; 18 19 import java.net.InetSocketAddress; 20 21 /** 22 * An infinite stream of DNS server addresses. 23 */ 24 public interface DnsServerAddressStream { 25 /** 26 * Retrieves the next DNS server address from the stream. 27 */ 28 InetSocketAddress next(); 29 30 /** 31 * Get the number of times {@link #next()} will return a distinct element before repeating or terminating. 32 * @return the number of times {@link #next()} will return a distinct element before repeating or terminating. 33 */ 34 int size(); 35 36 /** 37 * Duplicate this object. The result of this should be able to be independently iterated over via {@link #next()}. 38 * <p> 39 * Note that {@link #clone()} isn't used because it may make sense for some implementations to have the following 40 * relationship {@code x.duplicate() == x}. 41 * @return A duplicate of this object. 42 */ 43 DnsServerAddressStream duplicate(); 44 }