001    /****************************************************************
002     * Licensed to the Apache Software Foundation (ASF) under one   *
003     * or more contributor license agreements.  See the NOTICE file *
004     * distributed with this work for additional information        *
005     * regarding copyright ownership.  The ASF licenses this file   *
006     * to you under the Apache License, Version 2.0 (the            *
007     * "License"); you may not use this file except in compliance   *
008     * with the License.  You may obtain a copy of the License at   *
009     *                                                              *
010     *   http://www.apache.org/licenses/LICENSE-2.0                 *
011     *                                                              *
012     * Unless required by applicable law or agreed to in writing,   *
013     * software distributed under the License is distributed on an  *
014     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
015     * KIND, either express or implied.  See the License for the    *
016     * specific language governing permissions and limitations      *
017     * under the License.                                           *
018     ****************************************************************/
019    
020    package org.apache.james.jspf.core;
021    
022    import org.apache.james.jspf.core.exceptions.TimeoutException;
023    
024    import java.util.List;
025    
026    /**
027     * Interface which should be used to access all necassary DNS-Records
028     *  
029     */
030    public interface DNSService {
031        
032        /**
033         * Retrieve dns records for the given host
034         * 
035         * @param request the dns request
036         * @return an array of Strings representing the records
037         * @throws TimeoutException
038         */
039        public List<String> getRecords(DNSRequest request) throws TimeoutException;
040    
041        /**
042         * Try to get all domain names for the running host
043         * 
044         * @return names A List contains all domain names which could resolved
045         */
046        public List<String> getLocalDomainNames();
047    
048        /**
049         * Set the timeout for DNS-Requests
050         * 
051         * @param timeOut The timeout in seconds
052         */
053        public void setTimeOut(int timeOut);
054        
055        /**
056         * @return the current record limit
057         */
058        public int getRecordLimit();
059    
060        /**
061         * Sets a new limit for the number of records for MX and PTR lookups.
062         * 
063         * @param recordLimit the new limit (0 => unlimited)
064         */
065        public void setRecordLimit(int recordLimit);
066    
067    }