public class LookupSession
extends java.lang.Object
LookupSession.LookupSessionBuilder
instance returned by builder()
.Modifier and Type | Class and Description |
---|---|
static class |
LookupSession.LookupSessionBuilder
A builder for
LookupSession instances. |
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.Integer,Cache> |
caches |
private boolean |
cycleResults |
static int |
DEFAULT_MAX_ITERATIONS |
static int |
DEFAULT_NDOTS |
private java.util.concurrent.Executor |
executor |
private HostsFileParser |
hostsFileParser |
private IrrelevantRecordMode |
irrelevantRecordMode |
private int |
maxRedirects |
private int |
ndots |
private Resolver |
resolver |
private java.util.List<Name> |
searchPath |
Modifier | Constructor and Description |
---|---|
private |
LookupSession(@NonNull Resolver resolver,
int maxRedirects,
int ndots,
java.util.List<Name> searchPath,
boolean cycleResults,
java.util.List<Cache> caches,
HostsFileParser hostsFileParser,
java.util.concurrent.Executor executor,
IrrelevantRecordMode irrelevantRecordMode) |
Modifier and Type | Method and Description |
---|---|
static LookupSession.LookupSessionBuilder |
builder()
Returns an empty
LookupSession.LookupSessionBuilder instance. |
private static LookupResult |
buildResult(Message answer,
java.util.List<Name> aliases,
Record query)
Returns a LookupResult if this response was a non-exceptional empty result, else null.
|
private <T extends java.lang.Throwable,R> |
completeExceptionally(T failure) |
static LookupSession.LookupSessionBuilder |
defaultBuilder()
Returns a
LookupSession.LookupSessionBuilder instance initialized with defaults. |
(package private) java.util.List<Name> |
expandName(Name name)
Generate a stream of names according to the search path application semantics.
|
(package private) Cache |
getCache(int dclass) |
java.util.concurrent.CompletionStage<LookupResult> |
lookupAsync(Name name,
int type)
Make an asynchronous lookup of the provided name using the default
DClass.IN . |
java.util.concurrent.CompletionStage<LookupResult> |
lookupAsync(Name name,
int type,
int dclass)
Make an asynchronous lookup of the provided name.
|
java.util.concurrent.CompletionStage<LookupResult> |
lookupAsync(Record question)
Make an asynchronous lookup with the provided
Record . |
private java.util.concurrent.CompletionStage<LookupResult> |
lookupUntilSuccess(java.util.Iterator<Name> names,
int type,
int dclass) |
private java.util.concurrent.CompletionStage<LookupResult> |
lookupWithCache(Record queryRecord,
java.util.List<Name> aliases) |
private LookupResult |
lookupWithHosts(java.util.List<Name> names,
int type) |
private java.util.concurrent.CompletionStage<LookupResult> |
lookupWithResolver(Record queryRecord,
java.util.List<Name> aliases) |
private Message |
maybeAddToCache(Message message) |
private java.util.concurrent.CompletionStage<LookupResult> |
maybeFollowRedirect(LookupResult response,
Record query,
int redirectCount) |
private java.util.concurrent.CompletionStage<LookupResult> |
maybeFollowRedirectsInAnswer(LookupResult response,
Record query,
int redirectCount) |
private java.util.concurrent.CompletionStage<LookupResult> |
resolveRedirects(LookupResult response,
Record query) |
private static Name |
safeConcat(Name name,
Name suffix) |
private java.util.concurrent.CompletionStage<LookupResult> |
setResponseToMessageFuture(SetResponse setResponse,
Record queryRecord,
java.util.List<Name> aliases) |
public static final int DEFAULT_MAX_ITERATIONS
public static final int DEFAULT_NDOTS
private final Resolver resolver
private final int maxRedirects
private final int ndots
private final java.util.List<Name> searchPath
private final boolean cycleResults
private final java.util.Map<java.lang.Integer,Cache> caches
private final HostsFileParser hostsFileParser
private final java.util.concurrent.Executor executor
private IrrelevantRecordMode irrelevantRecordMode
private LookupSession(@NonNull @NonNull Resolver resolver, int maxRedirects, int ndots, java.util.List<Name> searchPath, boolean cycleResults, java.util.List<Cache> caches, HostsFileParser hostsFileParser, java.util.concurrent.Executor executor, IrrelevantRecordMode irrelevantRecordMode)
public static LookupSession.LookupSessionBuilder builder()
LookupSession.LookupSessionBuilder
instance. See defaultBuilder()
for a
builder initialized with defaults.public static LookupSession.LookupSessionBuilder defaultBuilder()
LookupSession.LookupSessionBuilder
instance initialized with defaults.
ExtendedResolver
initialized with the system's default
DNS servers as determined by ResolverConfig
.
ResolverConfig
.
IN
class is installed.
Cache getCache(int dclass)
public java.util.concurrent.CompletionStage<LookupResult> lookupAsync(Record question)
Record
.question
- the name, type and DClass to look up.CompletionStage
what will yield the eventual lookup result.public java.util.concurrent.CompletionStage<LookupResult> lookupAsync(Name name, int type)
DClass.IN
.name
- the name to look up.type
- the type to look up, values should correspond to constants in Type
.CompletionStage
what will yield the eventual lookup result.public java.util.concurrent.CompletionStage<LookupResult> lookupAsync(Name name, int type, int dclass)
java.util.List<Name> expandName(Name name)
Lookup
. Note that the stream returned is
never empty, as it will at the very least always contain name
.private LookupResult lookupWithHosts(java.util.List<Name> names, int type)
private java.util.concurrent.CompletionStage<LookupResult> lookupUntilSuccess(java.util.Iterator<Name> names, int type, int dclass)
private java.util.concurrent.CompletionStage<LookupResult> lookupWithCache(Record queryRecord, java.util.List<Name> aliases)
private java.util.concurrent.CompletionStage<LookupResult> lookupWithResolver(Record queryRecord, java.util.List<Name> aliases)
private java.util.concurrent.CompletionStage<LookupResult> setResponseToMessageFuture(SetResponse setResponse, Record queryRecord, java.util.List<Name> aliases)
private <T extends java.lang.Throwable,R> java.util.concurrent.CompletionStage<R> completeExceptionally(T failure)
private java.util.concurrent.CompletionStage<LookupResult> resolveRedirects(LookupResult response, Record query)
private java.util.concurrent.CompletionStage<LookupResult> maybeFollowRedirect(LookupResult response, Record query, int redirectCount)
private java.util.concurrent.CompletionStage<LookupResult> maybeFollowRedirectsInAnswer(LookupResult response, Record query, int redirectCount)
private static LookupResult buildResult(Message answer, java.util.List<Name> aliases, Record query)