All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.minidns.DnsCache Maven / Gradle / Ivy

/*
 * Copyright 2015-2018 the original author or authors
 *
 * This software is licensed under the Apache License, Version 2.0,
 * the GNU Lesser General Public License version 2 or later ("LGPL")
 * and the WTFPL.
 * You may choose either license to govern your use of this software only
 * upon the condition that you accept all of the terms of either
 * the Apache License 2.0, the LGPL 2.1+ or the WTFPL.
 */
package org.minidns;

import org.minidns.dnsmessage.DnsMessage;
import org.minidns.dnsname.DnsName;

/**
 * Cache for DNS Entries. Implementations must be thread safe.
 */
public abstract class DnsCache {

    public static final int DEFAULT_CACHE_SIZE = 512;

    /**
     * Add an an dns answer/response for a given dns question. Implementations
     * should honor the ttl / receive timestamp.
     * @param query The query message containing a question.
     * @param message The dns message.
     */
    public final void put(DnsMessage query, DnsMessage message) {
        putNormalized(query.asNormalizedVersion(), message);
    }

    protected abstract void putNormalized(DnsMessage normalizedQuery, DnsMessage reply);

    public abstract void offer(DnsMessage query, DnsMessage reply, DnsName authoritativeZone);

    /**
     * Request a cached dns response.
     * @param query The query message containing a question.
     * @return The dns message.
     */
    public final DnsMessage get(DnsMessage query) {
        return getNormalized(query.asNormalizedVersion());
    }

    protected abstract DnsMessage getNormalized(DnsMessage normalizedQuery);

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy