Esempio n. 1
0
        /// <summary>
        /// Create a new cache entry.
        /// </summary>
        public CacheEntry(DnsQuestion question, DnsRecordBase[] records, int ttl)
        {
            Since = DateTime.UtcNow;
            Question = question;

            foreach (var record in records)
            {
                // Override the TTL
                record.TimeToLive = ttl > 0 ? ttl : int.MaxValue;
            }

            Records = records;
        }
Esempio n. 2
0
        private static DnsRecordBase ParseRecord(byte[] resultData, ref int currentPosition)
        {
            int startPosition = currentPosition;

            DomainName    name       = ParseDomainName(resultData, ref currentPosition);
            RecordType    recordType = (RecordType)ParseUShort(resultData, ref currentPosition);
            DnsRecordBase record     = DnsRecordBase.Create(recordType, resultData, currentPosition + 6);

            record.StartPosition    = startPosition;
            record.Name             = name;
            record.RecordType       = recordType;
            record.RecordClass      = (RecordClass)ParseUShort(resultData, ref currentPosition);
            record.TimeToLive       = ParseInt(resultData, ref currentPosition);
            record.RecordDataLength = ParseUShort(resultData, ref currentPosition);

            if (record.RecordDataLength > 0)
            {
                record.ParseRecordData(resultData, currentPosition, record.RecordDataLength);
                currentPosition += record.RecordDataLength;
            }

            return(record);
        }