LumiSoft.Net.Dns.Client.DnsCache.GetFromCache C# (CSharp) Method

GetFromCache() public static method

Tries to get dns records from cache, if any.
public static GetFromCache ( string qname, int qtype ) : DnsServerResponse
qname string
qtype int
return DnsServerResponse
        public static DnsServerResponse GetFromCache(string qname,int qtype)
        {
            try{
                if(m_pCache.Contains(qname + qtype)){
                    DnsCacheEntry entry = (DnsCacheEntry)m_pCache[qname + qtype];

                    // If cache object isn't expired
                    if(entry.Time.AddSeconds(m_CacheTime) > DateTime.Now){
                        return entry.Answers;
                    }
                }
            }
            catch{
            }

            return null;
        }

Usage Example

Example #1
0
        /// <summary>
        /// Sends query to server.
        /// </summary>
        /// <param name="timeout">Query timeout in milli seconds.</param>
        /// <param name="qname">Query text.</param>
        /// <param name="qtype">Query type.</param>
        /// <param name="qclass">Query class.</param>
        /// <returns>Returns DNS server response.</returns>
        private DnsServerResponse QueryServer(int timeout, string qname, QTYPE qtype, int qclass)
        {
            if (m_DnsServers == null || m_DnsServers.Length == 0)
            {
                throw new Exception("Dns server isn't specified !");
            }

            // See if query is in cache
            if (m_UseDnsCache)
            {
                DnsServerResponse resopnse = DnsCache.GetFromCache(qname, (int)qtype);
                if (resopnse != null)
                {
                    return(resopnse);
                }
            }

            int queryID = Dns_Client.ID;

            byte[] query = CreateQuery(queryID, qname, qtype, qclass);

            // Create transcation and start processing it.
            using (DnsTransaction transaction = new DnsTransaction(this, queryID, qname, (int)qtype, timeout, query)){
                ManualResetEvent wait = new ManualResetEvent(false);

                transaction.Timeout += delegate(object s, EventArgs e){
                    wait.Set();
                };
                transaction.Completed += delegate(object s, EventArgs e){
                    wait.Set();
                };
                m_pTransactions.Add(transaction.ID, transaction);

                // Start transaction processing and wait transaction to complete.
                transaction.Start();
                wait.WaitOne();

                // DNS server response received.
                if (transaction.Response != null)
                {
                    return(transaction.Response);
                }
                // No server response - timeout.
                else
                {
                    throw new Exception("Timeout - no response from DNS server.");
                }
            }
        }
All Usage Examples Of LumiSoft.Net.Dns.Client.DnsCache::GetFromCache