/// <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; }
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); }