Show / Hide Table of Contents

Class Catalog

A dictionary of Node.

Inheritance
Object
ConcurrentDictionary<DomainName, Node>
Catalog
Implements
IDictionary<DomainName, Node>
ICollection<KeyValuePair<DomainName, Node>>
IDictionary
ICollection
IReadOnlyDictionary<DomainName, Node>
IReadOnlyCollection<KeyValuePair<DomainName, Node>>
IEnumerable<KeyValuePair<DomainName, Node>>
IEnumerable
Inherited Members
ConcurrentDictionary<DomainName, Node>.TryAdd(DomainName, Node)
ConcurrentDictionary<DomainName, Node>.ContainsKey(DomainName)
ConcurrentDictionary<DomainName, Node>.TryRemove(DomainName, Node)
ConcurrentDictionary<DomainName, Node>.TryGetValue(DomainName, Node)
ConcurrentDictionary<DomainName, Node>.TryUpdate(DomainName, Node, Node)
ConcurrentDictionary<DomainName, Node>.Clear()
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>>.CopyTo(System.Collections.Generic.KeyValuePair<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>[], System.Int32)
ConcurrentDictionary<DomainName, Node>.ToArray()
ConcurrentDictionary<DomainName, Node>.GetEnumerator()
ConcurrentDictionary<DomainName, Node>.GetOrAdd(DomainName, Func<DomainName, Node>)
ConcurrentDictionary<DomainName, Node>.GetOrAdd(DomainName, Node)
ConcurrentDictionary<DomainName, Node>.GetOrAdd<TArg>(DomainName, Func<DomainName, TArg, Node>, TArg)
ConcurrentDictionary<DomainName, Node>.AddOrUpdate<TArg>(DomainName, Func<DomainName, TArg, Node>, Func<DomainName, Node, TArg, Node>, TArg)
ConcurrentDictionary<DomainName, Node>.AddOrUpdate(DomainName, Func<DomainName, Node>, Func<DomainName, Node, Node>)
ConcurrentDictionary<DomainName, Node>.AddOrUpdate(DomainName, Node, Func<DomainName, Node, Node>)
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.Generic.IDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.Add(Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node)
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.Generic.IDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.Remove(Makaretu.Dns.DomainName)
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>>.Add(System.Collections.Generic.KeyValuePair<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>)
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>>.Contains(System.Collections.Generic.KeyValuePair<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>)
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>>.Remove(System.Collections.Generic.KeyValuePair<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>)
ConcurrentDictionary<DomainName, Node>.IEnumerable.GetEnumerator()
ConcurrentDictionary<DomainName, Node>.IDictionary.Add(Object, Object)
ConcurrentDictionary<DomainName, Node>.IDictionary.Contains(Object)
ConcurrentDictionary<DomainName, Node>.IDictionary.GetEnumerator()
ConcurrentDictionary<DomainName, Node>.IDictionary.Remove(Object)
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.IDictionary.get_Item(System.Object)
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.IDictionary.set_Item(System.Object, System.Object)
ConcurrentDictionary<DomainName, Node>.ICollection.CopyTo(Array, Int32)
ConcurrentDictionary<DomainName, Node>.Item[DomainName]
ConcurrentDictionary<DomainName, Node>.Count
ConcurrentDictionary<DomainName, Node>.IsEmpty
ConcurrentDictionary<DomainName, Node>.Keys
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.Generic.IReadOnlyDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.Keys
ConcurrentDictionary<DomainName, Node>.Values
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.Generic.IReadOnlyDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.Values
System.Collections.Concurrent.ConcurrentDictionary<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>.System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<Makaretu.Dns.DomainName, Makaretu.Dns.Resolving.Node>>.IsReadOnly
ConcurrentDictionary<DomainName, Node>.IDictionary.IsFixedSize
ConcurrentDictionary<DomainName, Node>.IDictionary.IsReadOnly
ConcurrentDictionary<DomainName, Node>.IDictionary.Keys
ConcurrentDictionary<DomainName, Node>.IDictionary.Values
ConcurrentDictionary<DomainName, Node>.IDictionary.Item[Object]
ConcurrentDictionary<DomainName, Node>.ICollection.IsSynchronized
ConcurrentDictionary<DomainName, Node>.ICollection.SyncRoot
Object.ToString()
Object.Equals(Object)
Object.Equals(Object, Object)
Object.ReferenceEquals(Object, Object)
Object.GetHashCode()
Object.GetType()
Object.MemberwiseClone()
Namespace: Makaretu.Dns.Resolving
Assembly: Makaretu.Dns.dll
Syntax
public class Catalog : ConcurrentDictionary<DomainName, Node>, IDictionary<DomainName, Node>, ICollection<KeyValuePair<DomainName, Node>>, IDictionary, ICollection, IReadOnlyDictionary<DomainName, Node>, IReadOnlyCollection<KeyValuePair<DomainName, Node>>, IEnumerable<KeyValuePair<DomainName, Node>>, IEnumerable
Remarks

This is a portion of the DNS distribute database.

The key is the case insensitive Name and the value is a Node.

Methods

| Improve this Doc View Source

Add(ResourceRecord, Boolean)

Add or update the resource record to the catalog.

Declaration
public Node Add(ResourceRecord resource, bool authoritative = false)
Parameters
Type Name Description
ResourceRecord resource

The Name is also the name of the node.

Boolean authoritative

Indicates if the resource is authoritative or cached. Only used when a Node is created.

Returns
Type Description
Node

The Node that was created or updated.

Remarks

If the resource already exists, then update the non-equality properties TTL and CreationTime.

| Improve this Doc View Source

Include(PresentationReader, Boolean)

Include the resource records.

Declaration
public void Include(PresentationReader reader, bool authoritative = false)
Parameters
Type Name Description
PresentationReader reader

The source of the resource records.

Boolean authoritative

Indicates if a ResourceRecord is authoritative or cached. Only used when a Node is created.

| Improve this Doc View Source

IncludeReverseLookupRecords()

Add PTR records for each authoritative A/AAAA record.

Declaration
public void IncludeReverseLookupRecords()
Remarks

This enables reverse DNS lookup of all address records.

| Improve this Doc View Source

IncludeRootHints()

Include the root name servers.

Declaration
public Node IncludeRootHints()
Returns
Type Description
Node

The Node that represents the "root".

Remarks

A DNS recursive resolver typically needs a "root hints file". This file contains the names and IP addresses of the authoritative name servers for the root zone, so the software can bootstrap the DNS resolution process.

| Improve this Doc View Source

IncludeZone(PresentationReader)

Include the zone information.

Declaration
public Node IncludeZone(PresentationReader reader)
Parameters
Type Name Description
PresentationReader reader

The source of the zone information.

Returns
Type Description
Node

The Node that represents the zone.

Remarks

All included nodes are marked as Authoritative.

| Improve this Doc View Source

NodesInCanonicalOrder()

Get a sequence of nodes in canonical order.

Declaration
public IEnumerable<Node> NodesInCanonicalOrder()
Returns
Type Description
IEnumerable<Node>

A sequence of nodes in canonical order.

Remarks

Node names are converted to US-ASCII lowercase and then sorted by their reversed labels.

| Improve this Doc View Source

RemoveZone(DomainName)

Remove all nodes that belong to the zone.

Declaration
public void RemoveZone(DomainName name)
Parameters
Type Name Description
DomainName name

The name of the zone.

Implements

System.Collections.Generic.IDictionary<TKey,TValue>
System.Collections.Generic.ICollection<T>
System.Collections.IDictionary
System.Collections.ICollection
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue>
System.Collections.Generic.IReadOnlyCollection<T>
System.Collections.Generic.IEnumerable<T>
System.Collections.IEnumerable
  • Improve this Doc
  • View Source
Back to top Generated by DocFX