tytd-server/bin/Release/Makaretu.Dns.Multicast.xml

863 lines
37 KiB
XML
Executable File

<?xml version="1.0"?>
<doc>
<assembly>
<name>Makaretu.Dns.Multicast</name>
</assembly>
<members>
<member name="T:Makaretu.Dns.MessageEventArgs">
<summary>
The event data for <see cref="E:Makaretu.Dns.MulticastService.QueryReceived"/> or
<see cref="E:Makaretu.Dns.MulticastService.AnswerReceived"/>.
</summary>
</member>
<member name="P:Makaretu.Dns.MessageEventArgs.Message">
<summary>
The DNS message.
</summary>
<value>
The received message.
</value>
</member>
<member name="P:Makaretu.Dns.MessageEventArgs.RemoteEndPoint">
<summary>
The DNS message sender endpoint.
</summary>
<value>
The endpoint from the message was received.
</value>
</member>
<member name="P:Makaretu.Dns.MessageEventArgs.IsLegacyUnicast">
<summary>
Determines if the sender is using legacy unicast DNS.
</summary>
<value>
<b>false</b> if the sender is using port 5353.
</value>
</member>
<member name="T:Makaretu.Dns.MulticastClient">
<summary>
Performs the magic to send and receive datagrams over multicast
sockets.
</summary>
</member>
<member name="F:Makaretu.Dns.MulticastClient.MulticastPort">
<summary>
The port number assigned to Multicast DNS.
</summary>
<value>
Port number 5353.
</value>
</member>
<member name="T:Makaretu.Dns.MulticastService">
<summary>
Muticast Domain Name Service.
</summary>
<remarks>
Sends and receives DNS queries and answers via the multicast mechachism
defined in <see href="https://tools.ietf.org/html/rfc6762"/>.
<para>
Use <see cref="M:Makaretu.Dns.MulticastService.Start"/> to start listening for multicast messages.
One of the events, <see cref="E:Makaretu.Dns.MulticastService.QueryReceived"/> or <see cref="E:Makaretu.Dns.MulticastService.AnswerReceived"/>, is
raised when a <see cref="T:Makaretu.Dns.Message"/> is received.
</para>
</remarks>
</member>
<member name="F:Makaretu.Dns.MulticastService.sentMessages">
<summary>
Recently sent messages.
</summary>
</member>
<member name="F:Makaretu.Dns.MulticastService.receivedMessages">
<summary>
Recently received messages.
</summary>
</member>
<member name="F:Makaretu.Dns.MulticastService.client">
<summary>
The multicast client.
</summary>
</member>
<member name="F:Makaretu.Dns.MulticastService.unicastClientIp4">
<summary>
Use to send unicast IPv4 answers.
</summary>
</member>
<member name="F:Makaretu.Dns.MulticastService.unicastClientIp6">
<summary>
Use to send unicast IPv6 answers.
</summary>
</member>
<member name="F:Makaretu.Dns.MulticastService.networkInterfacesFilter">
<summary>
Function used for listening filtered network interfaces.
</summary>
</member>
<member name="M:Makaretu.Dns.MulticastService.#cctor">
<summary>
Set the default TTLs.
</summary>
<seealso cref="F:Makaretu.Dns.ResourceRecord.DefaultTTL"/>
<seealso cref="F:Makaretu.Dns.ResourceRecord.DefaultHostTTL"/>
</member>
<member name="E:Makaretu.Dns.MulticastService.QueryReceived">
<summary>
Raised when any local MDNS service sends a query.
</summary>
<value>
Contains the query <see cref="T:Makaretu.Dns.Message"/>.
</value>
<remarks>
Any exception throw by the event handler is simply logged and
then forgotten.
</remarks>
<seealso cref="M:Makaretu.Dns.MulticastService.SendQuery(Makaretu.Dns.Message)"/>
</member>
<member name="E:Makaretu.Dns.MulticastService.AnswerReceived">
<summary>
Raised when any link-local MDNS service responds to a query.
</summary>
<value>
Contains the answer <see cref="T:Makaretu.Dns.Message"/>.
</value>
<remarks>
Any exception throw by the event handler is simply logged and
then forgotten.
</remarks>
</member>
<member name="E:Makaretu.Dns.MulticastService.MalformedMessage">
<summary>
Raised when a DNS message is received that cannot be decoded.
</summary>
<value>
The DNS message as a byte array.
</value>
</member>
<member name="E:Makaretu.Dns.MulticastService.NetworkInterfaceDiscovered">
<summary>
Raised when one or more network interfaces are discovered.
</summary>
<value>
Contains the network interface(s).
</value>
</member>
<member name="M:Makaretu.Dns.MulticastService.#ctor(System.Func{System.Collections.Generic.IEnumerable{System.Net.NetworkInformation.NetworkInterface},System.Collections.Generic.IEnumerable{System.Net.NetworkInformation.NetworkInterface}})">
<summary>
Create a new instance of the <see cref="T:Makaretu.Dns.MulticastService"/> class.
</summary>
<param name="filter">
Multicast listener will be bound to result of filtering function.
</param>
</member>
<member name="P:Makaretu.Dns.MulticastService.UseIpv4">
<summary>
Send and receive on IPv4.
</summary>
<value>
Defaults to <b>true</b> if the OS supports it.
</value>
</member>
<member name="P:Makaretu.Dns.MulticastService.UseIpv6">
<summary>
Send and receive on IPv6.
</summary>
<value>
Defaults to <b>true</b> if the OS supports it.
</value>
</member>
<member name="P:Makaretu.Dns.MulticastService.IgnoreDuplicateMessages">
<summary>
Determines if received messages are checked for duplicates.
</summary>
<value>
<b>true</b> to ignore duplicate messages. Defaults to <b>true</b>.
</value>
<remarks>
When set, a message that has been received within the last minute
will be ignored.
</remarks>
</member>
<member name="P:Makaretu.Dns.MulticastService.NetworkInterfaceDiscoveryInterval">
<summary>
The interval for discovering network interfaces.
</summary>
<value>
Default is 2 minutes.
</value>
<remarks>
When the interval is reached a task is started to discover any
new network interfaces.
</remarks>
<seealso cref="E:Makaretu.Dns.MulticastService.NetworkInterfaceDiscovered"/>
</member>
<member name="M:Makaretu.Dns.MulticastService.GetNetworkInterfaces">
<summary>
Get the network interfaces that are useable.
</summary>
<returns>
A sequence of <see cref="T:System.Net.NetworkInformation.NetworkInterface"/>.
</returns>
<remarks>
The following filters are applied
<list type="bullet">
<item><description>interface is enabled</description></item>
<item><description>interface is not a loopback</description></item>
</list>
<para>
If no network interface is operational, then the loopback interface(s)
are included (127.0.0.1 and/or ::1).
</para>
</remarks>
</member>
<member name="M:Makaretu.Dns.MulticastService.GetIPAddresses">
<summary>
Get the IP addresses of the local machine.
</summary>
<returns>
A sequence of IP addresses of the local machine.
</returns>
<remarks>
The loopback addresses (127.0.0.1 and ::1) are NOT included in the
returned sequences.
</remarks>
</member>
<member name="M:Makaretu.Dns.MulticastService.GetLinkLocalAddresses">
<summary>
Get the link local IP addresses of the local machine.
</summary>
<returns>
A sequence of IP addresses.
</returns>
<remarks>
All IPv4 addresses are considered link local.
</remarks>
<seealso href="https://en.wikipedia.org/wiki/Link-local_address"/>
</member>
<member name="M:Makaretu.Dns.MulticastService.Start">
<summary>
Start the service.
</summary>
</member>
<member name="M:Makaretu.Dns.MulticastService.Stop">
<summary>
Stop the service.
</summary>
<remarks>
Clears all the event handlers.
</remarks>
</member>
<member name="M:Makaretu.Dns.MulticastService.ResolveAsync(Makaretu.Dns.Message,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:Makaretu.Dns.MulticastService.SendQuery(Makaretu.Dns.DomainName,Makaretu.Dns.DnsClass,Makaretu.Dns.DnsType)">
<summary>
Ask for answers about a name.
</summary>
<param name="name">
A domain name that should end with ".local", e.g. "myservice.local".
</param>
<param name="klass">
The class, defaults to <see cref="F:Makaretu.Dns.DnsClass.IN"/>.
</param>
<param name="type">
The question type, defaults to <see cref="F:Makaretu.Dns.DnsType.ANY"/>.
</param>
<remarks>
Answers to any query are obtained on the <see cref="E:Makaretu.Dns.MulticastService.AnswerReceived"/>
event.
</remarks>
<exception cref="T:System.InvalidOperationException">
When the service has not started.
</exception>
</member>
<member name="M:Makaretu.Dns.MulticastService.SendUnicastQuery(Makaretu.Dns.DomainName,Makaretu.Dns.DnsClass,Makaretu.Dns.DnsType)">
<summary>
Ask for answers about a name and accept unicast and/or broadcast response.
</summary>
<param name="name">
A domain name that should end with ".local", e.g. "myservice.local".
</param>
<param name="klass">
The class, defaults to <see cref="F:Makaretu.Dns.DnsClass.IN"/>.
</param>
<param name="type">
The question type, defaults to <see cref="F:Makaretu.Dns.DnsType.ANY"/>.
</param>
<remarks>
Send a "QU" question (unicast). The most significat bit of the Class is set.
Answers to any query are obtained on the <see cref="E:Makaretu.Dns.MulticastService.AnswerReceived"/>
event.
</remarks>
<exception cref="T:System.InvalidOperationException">
When the service has not started.
</exception>
</member>
<member name="M:Makaretu.Dns.MulticastService.SendQuery(Makaretu.Dns.Message)">
<summary>
Ask for answers.
</summary>
<param name="msg">
A query message.
</param>
<remarks>
Answers to any query are obtained on the <see cref="E:Makaretu.Dns.MulticastService.AnswerReceived"/>
event.
</remarks>
<exception cref="T:System.InvalidOperationException">
When the service has not started.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
When the serialised <paramref name="msg"/> is too large.
</exception>
</member>
<member name="M:Makaretu.Dns.MulticastService.SendAnswer(Makaretu.Dns.Message,System.Boolean)">
<summary>
Send an answer to a query.
</summary>
<param name="answer">
The answer message.
</param>
<param name="checkDuplicate">
If <b>true</b>, then if the same <paramref name="answer"/> was
recently sent it will not be sent again.
</param>
<exception cref="T:System.InvalidOperationException">
When the service has not started.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
When the serialised <paramref name="answer"/> is too large.
</exception>
<remarks>
<para>
The <see cref="P:Makaretu.Dns.Message.AA"/> flag is set to true,
the <see cref="P:Makaretu.Dns.Message.Id"/> set to zero and any questions are removed.
</para>
<para>
The <paramref name="answer"/> is <see cref="M:Makaretu.Dns.Message.Truncate(System.Int32)">truncated</see>
if exceeds the maximum packet length.
</para>
<para>
<paramref name="checkDuplicate"/> should always be <b>true</b> except
when <see href="https://tools.ietf.org/html/rfc6762#section-8.1">answering a probe</see>.
</para>
<note type="caution">
If possible the <see cref="M:Makaretu.Dns.MulticastService.SendAnswer(Makaretu.Dns.Message,Makaretu.Dns.MessageEventArgs,System.Boolean)"/>
method should be used, so that legacy unicast queries are supported.
</note>
</remarks>
<see cref="E:Makaretu.Dns.MulticastService.QueryReceived"/>
<seealso cref="M:Makaretu.Dns.Message.CreateResponse"/>
</member>
<member name="M:Makaretu.Dns.MulticastService.SendAnswer(Makaretu.Dns.Message,Makaretu.Dns.MessageEventArgs,System.Boolean)">
<summary>
Send an answer to a query.
</summary>
<param name="answer">
The answer message.
</param>
<param name="query">
The query that is being answered.
</param>
<param name="checkDuplicate">
If <b>true</b>, then if the same <paramref name="answer"/> was
recently sent it will not be sent again.
</param>
<exception cref="T:System.InvalidOperationException">
When the service has not started.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
When the serialised <paramref name="answer"/> is too large.
</exception>
<remarks>
<para>
If the <paramref name="query"/> is a standard multicast query (sent to port 5353), then
<see cref="M:Makaretu.Dns.MulticastService.SendAnswer(Makaretu.Dns.Message,System.Boolean)"/> is called.
</para>
<para>
Otherwise a legacy unicast reponse is sent to sender's end point.
The <see cref="P:Makaretu.Dns.Message.AA"/> flag is set to true,
the <see cref="P:Makaretu.Dns.Message.Id"/> is set to query's ID,
the <see cref="P:Makaretu.Dns.Message.Questions"/> is set to the query's questions,
and all resource record TTLs have a max value of 10 seconds.
</para>
<para>
The <paramref name="answer"/> is <see cref="M:Makaretu.Dns.Message.Truncate(System.Int32)">truncated</see>
if exceeds the maximum packet length.
</para>
<para>
<paramref name="checkDuplicate"/> should always be <b>true</b> except
when <see href="https://tools.ietf.org/html/rfc6762#section-8.1">answering a probe</see>.
</para>
</remarks>
</member>
<member name="M:Makaretu.Dns.MulticastService.OnDnsMessage(System.Object,System.Net.Sockets.UdpReceiveResult)">
<summary>
Called by the MulticastClient when a DNS message is received.
</summary>
<param name="sender">
The <see cref="T:Makaretu.Dns.MulticastClient"/> that got the message.
</param>
<param name="result">
The received message <see cref="T:System.Net.Sockets.UdpReceiveResult"/>.
</param>
<remarks>
Decodes the <paramref name="result"/> and then raises
either the <see cref="E:Makaretu.Dns.MulticastService.QueryReceived"/> or <see cref="E:Makaretu.Dns.MulticastService.AnswerReceived"/> event.
<para>
Multicast DNS messages received with an OPCODE or RCODE other than zero
are silently ignored.
</para>
<para>
If the message cannot be decoded, then the <see cref="E:Makaretu.Dns.MulticastService.MalformedMessage"/>
event is raised.
</para>
</remarks>
</member>
<member name="M:Makaretu.Dns.MulticastService.Dispose(System.Boolean)">
<inheritdoc />
</member>
<member name="M:Makaretu.Dns.MulticastService.Dispose">
<inheritdoc />
</member>
<member name="T:Makaretu.Dns.NetworkInterfaceEventArgs">
<summary>
The event data for <see cref="E:Makaretu.Dns.MulticastService.NetworkInterfaceDiscovered"/>.
</summary>
</member>
<member name="P:Makaretu.Dns.NetworkInterfaceEventArgs.NetworkInterfaces">
<summary>
The sequece of detected network interfaces.
</summary>
<value>
A sequence of network interfaces.
</value>
</member>
<member name="T:Makaretu.Dns.RecentMessages">
<summary>
Maintains a sequence of recent messages.
</summary>
<remarks>
<b>RecentMessages</b> is used to determine if a message has already been
processed within the specified <see cref="P:Makaretu.Dns.RecentMessages.Interval"/>.
</remarks>
</member>
<member name="F:Makaretu.Dns.RecentMessages.Messages">
<summary>
Recent messages.
</summary>
<value>
The key is the Base64 encoding of the MD5 hash of
a message and the value is when the message was seen.
</value>
</member>
<member name="P:Makaretu.Dns.RecentMessages.Interval">
<summary>
The time interval used to determine if a message is recent.
</summary>
</member>
<member name="M:Makaretu.Dns.RecentMessages.TryAdd(System.Byte[])">
<summary>
Try adding a message to the recent message list.
</summary>
<param name="message">
The binary representation of a message.
</param>
<returns>
<b>true</b> if the message, did not already exist; otherwise,
<b>false</b> the message exists within the <see cref="P:Makaretu.Dns.RecentMessages.Interval"/>.
</returns>
</member>
<member name="M:Makaretu.Dns.RecentMessages.Prune">
<summary>
Remove any messages that are stale.
</summary>
<returns>
The number messages that were pruned.
</returns>
<remarks>
Anything older than an <see cref="P:Makaretu.Dns.RecentMessages.Interval"/> ago is removed.
</remarks>
</member>
<member name="M:Makaretu.Dns.RecentMessages.GetId(System.Byte[])">
<summary>
Gets a unique ID for a message.
</summary>
<param name="message">
The binary representation of a message.
</param>
<returns>
The Base64 encoding of the MD5 hash of the <paramref name="message"/>.
</returns>
</member>
<member name="T:Makaretu.Dns.ServiceDiscovery">
<summary>
DNS based Service Discovery is a way of using standard DNS programming interfaces, servers,
and packet formats to browse the network for services.
</summary>
<seealso href="https://tools.ietf.org/html/rfc6763">RFC 6763 DNS-Based Service Discovery</seealso>
</member>
<member name="F:Makaretu.Dns.ServiceDiscovery.ServiceName">
<summary>
The service discovery service name.
</summary>
<value>
The service name used to enumerate other services.
</value>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.#ctor">
<summary>
Creates a new instance of the <see cref="T:Makaretu.Dns.ServiceDiscovery"/> class.
</summary>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.#ctor(Makaretu.Dns.MulticastService)">
<summary>
Creates a new instance of the <see cref="T:Makaretu.Dns.ServiceDiscovery"/> class with
the specified <see cref="T:Makaretu.Dns.MulticastService"/>.
</summary>
<param name="mdns">
The underlaying <see cref="T:Makaretu.Dns.MulticastService"/> to use.
</param>
</member>
<member name="P:Makaretu.Dns.ServiceDiscovery.Mdns">
<summary>
Gets the multicasting service.
</summary>
<value>
Is used to send and recieve multicast <see cref="T:Makaretu.Dns.Message">DNS messages</see>.
</value>
</member>
<member name="P:Makaretu.Dns.ServiceDiscovery.AnswersContainsAdditionalRecords">
<summary>
Add the additional records into the answers.
</summary>
<value>
Defaults to <b>false</b>.
</value>
<remarks>
Some malformed systems, such as js-ipfs and go-ipfs, only examine
the <see cref="P:Makaretu.Dns.Message.Answers"/> and not the <see cref="P:Makaretu.Dns.Message.AdditionalRecords"/>.
Setting this to <b>true</b>, will move the additional records
into the answers.
<para>
This never done for DNS-SD answers.
</para>
</remarks>
</member>
<member name="P:Makaretu.Dns.ServiceDiscovery.NameServer">
<summary>
Gets the name server.
</summary>
<value>
Is used to answer questions.
</value>
</member>
<member name="E:Makaretu.Dns.ServiceDiscovery.ServiceDiscovered">
<summary>
Raised when a DNS-SD response is received.
</summary>
<value>
Contains the service name.
</value>
<remarks>
<b>ServiceDiscovery</b> passively monitors the network for any answers
to a DNS-SD query. When an anwser is received this event is raised.
<para>
Use <see cref="M:Makaretu.Dns.ServiceDiscovery.QueryAllServices"/> to initiate a DNS-SD question.
</para>
</remarks>
</member>
<member name="E:Makaretu.Dns.ServiceDiscovery.ServiceInstanceDiscovered">
<summary>
Raised when a servive instance is discovered.
</summary>
<value>
Contains the service instance name.
</value>
<remarks>
<b>ServiceDiscovery</b> passively monitors the network for any answers.
When an answer containing a PTR to a service instance is received
this event is raised.
</remarks>
</member>
<member name="E:Makaretu.Dns.ServiceDiscovery.ServiceInstanceShutdown">
<summary>
Raised when a servive instance is shutting down.
</summary>
<value>
Contains the service instance name.
</value>
<remarks>
<b>ServiceDiscovery</b> passively monitors the network for any answers.
When an answer containing a PTR to a service instance with a
TTL of zero is received this event is raised.
</remarks>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.QueryAllServices">
<summary>
Asks other MDNS services to send their service names.
</summary>
<remarks>
When an answer is received the <see cref="E:Makaretu.Dns.ServiceDiscovery.ServiceDiscovered"/> event is raised.
</remarks>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.QueryUnicastAllServices">
<summary>
Asks other MDNS services to send their service names;
accepts unicast and/or broadcast answers.
</summary>
<remarks>
When an answer is received the <see cref="E:Makaretu.Dns.ServiceDiscovery.ServiceDiscovered"/> event is raised.
</remarks>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.QueryServiceInstances(Makaretu.Dns.DomainName)">
<summary>
Asks instances of the specified service to send details.
</summary>
<param name="service">
The service name to query. Typically of the form "_<i>service</i>._tcp".
</param>
<remarks>
When an answer is received the <see cref="E:Makaretu.Dns.ServiceDiscovery.ServiceInstanceDiscovered"/> event is raised.
</remarks>
<seealso cref="P:Makaretu.Dns.ServiceProfile.ServiceName"/>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.QueryServiceInstances(Makaretu.Dns.DomainName,System.String)">
<summary>
Asks instances of the specified service with the subtype to send details.
</summary>
<param name="service">
The service name to query. Typically of the form "_<i>service</i>._tcp".
</param>
<param name="subtype">
The feature that is needed.
</param>
<remarks>
When an answer is received the <see cref="E:Makaretu.Dns.ServiceDiscovery.ServiceInstanceDiscovered"/> event is raised.
</remarks>
<seealso cref="P:Makaretu.Dns.ServiceProfile.ServiceName"/>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.QueryUnicastServiceInstances(Makaretu.Dns.DomainName)">
<summary>
Asks instances of the specified service to send details.
accepts unicast and/or broadcast answers.
</summary>
<param name="service">
The service name to query. Typically of the form "_<i>service</i>._tcp".
</param>
<remarks>
When an answer is received the <see cref="E:Makaretu.Dns.ServiceDiscovery.ServiceInstanceDiscovered"/> event is raised.
</remarks>
<seealso cref="P:Makaretu.Dns.ServiceProfile.ServiceName"/>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.Advertise(Makaretu.Dns.ServiceProfile)">
<summary>
Advertise a service profile.
</summary>
<param name="service">
The service profile.
</param>
<remarks>
Any queries for the service or service instance will be answered with
information from the profile.
<para>
Besides adding the profile's resource records to the <see cref="T:Makaretu.Dns.Resolving.Catalog"/> PTR records are
created to support DNS-SD and reverse address mapping (DNS address lookup).
</para>
</remarks>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.Announce(Makaretu.Dns.ServiceProfile)">
<summary>
Sends an unsolicited MDNS response describing the
service profile.
</summary>
<param name="profile">
The profile to describe.
</param>
<remarks>
Sends a MDNS response <see cref="T:Makaretu.Dns.Message"/> containing the pointer
and resource records of the <paramref name="profile"/>.
<para>
To provide increased robustness against packet loss,
two unsolicited responses are sent one second apart.
</para>
</remarks>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.Unadvertise(Makaretu.Dns.ServiceProfile)">
<summary>
Sends a goodbye message for the provided
profile and removes its pointer from the name sever.
</summary>
<param name="profile">The profile to send a goodbye message for.</param>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.Unadvertise">
<summary>
Sends a goodbye message for each anounced service.
</summary>
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.Dispose(System.Boolean)">
<inheritdoc />
</member>
<member name="M:Makaretu.Dns.ServiceDiscovery.Dispose">
<inheritdoc />
</member>
<member name="T:Makaretu.Dns.ServiceInstanceDiscoveryEventArgs">
<summary>
The event data for <see cref="E:Makaretu.Dns.ServiceDiscovery.ServiceInstanceDiscovered"/>.
</summary>
</member>
<member name="P:Makaretu.Dns.ServiceInstanceDiscoveryEventArgs.ServiceInstanceName">
<summary>
The fully qualified name of the service instance.
</summary>
<value>
Typically of the form "<i>instance</i>._<i>service</i>._tcp.local".
</value>
<seealso cref="P:Makaretu.Dns.ServiceProfile.FullyQualifiedName"/>
</member>
<member name="T:Makaretu.Dns.ServiceInstanceShutdownEventArgs">
<summary>
The event data for <see cref="E:Makaretu.Dns.ServiceDiscovery.ServiceInstanceShutdown"/>.
</summary>
</member>
<member name="P:Makaretu.Dns.ServiceInstanceShutdownEventArgs.ServiceInstanceName">
<summary>
The fully qualified name of the service instance.
</summary>
<value>
Typically of the form "<i>instance</i>._<i>service</i>._tcp.local".
</value>
<seealso cref="P:Makaretu.Dns.ServiceProfile.FullyQualifiedName"/>
</member>
<member name="T:Makaretu.Dns.ServiceProfile">
<summary>
Defines a specific service that can be discovered.
</summary>
<seealso cref="M:Makaretu.Dns.ServiceDiscovery.Advertise(Makaretu.Dns.ServiceProfile)"/>
</member>
<member name="M:Makaretu.Dns.ServiceProfile.#ctor">
<summary>
Creates a new instance of the <see cref="T:Makaretu.Dns.ServiceProfile"/> class.
</summary>
<remarks>
All details must be filled in by the caller, especially the <see cref="P:Makaretu.Dns.ServiceProfile.Resources"/>.
</remarks>
</member>
<member name="M:Makaretu.Dns.ServiceProfile.#ctor(Makaretu.Dns.DomainName,Makaretu.Dns.DomainName,System.UInt16,System.Collections.Generic.IEnumerable{System.Net.IPAddress})">
<summary>
Creates a new instance of the <see cref="T:Makaretu.Dns.ServiceProfile"/> class
with the specified details.
</summary>
<param name="instanceName">
A unique identifier for the specific service instance.
</param>
<param name="serviceName">
The <see cref="P:Makaretu.Dns.ServiceProfile.ServiceName">name</see> of the service.
</param>
<param name="port">
The TCP/UDP port of the service.
</param>
<param name="addresses">
The IP addresses of the specific service instance. If <b>null</b> then
<see cref="M:Makaretu.Dns.MulticastService.GetIPAddresses"/> is used.
</param>
<remarks>
The SRV, TXT and A/AAAA resoruce records are added to the <see cref="P:Makaretu.Dns.ServiceProfile.Resources"/>.
</remarks>
</member>
<member name="P:Makaretu.Dns.ServiceProfile.Domain">
<summary>
The top level domain (TLD) name of the service.
</summary>
<value>
Always "local".
</value>
</member>
<member name="P:Makaretu.Dns.ServiceProfile.ServiceName">
<summary>
A unique name for the service.
</summary>
<value>
Typically of the form "_<i>service</i>._tcp".
</value>
<remarks>
It consists of a pair of DNS labels, following the
<see href="https://www.ietf.org/rfc/rfc2782.txt">SRV records</see> convention.
The first label of the pair is an underscore character (_) followed by
the <see href="https://tools.ietf.org/html/rfc6335">service name</see>.
The second label is either "_tcp" (for application
protocols that run over TCP) or "_udp" (for all others).
</remarks>
</member>
<member name="P:Makaretu.Dns.ServiceProfile.InstanceName">
<summary>
A unique identifier for the service instance.
</summary>
<value>
Some unique value.
</value>
</member>
<member name="P:Makaretu.Dns.ServiceProfile.QualifiedServiceName">
<summary>
The service name and domain.
</summary>
<value>
Typically of the form "_<i>service</i>._tcp.local".
</value>
</member>
<member name="P:Makaretu.Dns.ServiceProfile.HostName">
<summary>
The fully qualified name of the instance's host.
</summary>
<remarks>
This can be used to query the address records (A and AAAA)
of the service instance.
</remarks>
</member>
<member name="P:Makaretu.Dns.ServiceProfile.FullyQualifiedName">
<summary>
The instance name, service name and domain.
</summary>
<value>
<see cref="P:Makaretu.Dns.ServiceProfile.InstanceName"/>.<see cref="P:Makaretu.Dns.ServiceProfile.ServiceName"/>.<see cref="P:Makaretu.Dns.ServiceProfile.Domain"/>
</value>
</member>
<member name="P:Makaretu.Dns.ServiceProfile.Resources">
<summary>
DNS resource records that are used to locate the service instance.
</summary>
<value>
More infomation about the service.
</value>
<remarks>
All records should have the <see cref="P:Makaretu.Dns.ResourceRecord.Name"/> equal
to the <see cref="P:Makaretu.Dns.ServiceProfile.FullyQualifiedName"/> or the <see cref="P:Makaretu.Dns.ServiceProfile.HostName"/>.
<para>
At a minimum the <see cref="T:Makaretu.Dns.SRVRecord"/> and <see cref="T:Makaretu.Dns.TXTRecord"/>
records must be present.
Typically <see cref="T:Makaretu.Dns.AddressRecord">address records</see>
are also present and are associaed with <see cref="P:Makaretu.Dns.ServiceProfile.HostName"/>.
</para>
</remarks>
</member>
<member name="P:Makaretu.Dns.ServiceProfile.Subtypes">
<summary>
A list of service features implemented by the service instance.
</summary>
<value>
The default is an empty list.
</value>
<seealso href="https://tools.ietf.org/html/rfc6763#section-7.1"/>
</member>
<member name="M:Makaretu.Dns.ServiceProfile.AddProperty(System.String,System.String)">
<summary>
Add a property of the service to the <see cref="T:Makaretu.Dns.TXTRecord"/>.
</summary>
<param name="key">
The name of the property.
</param>
<param name="value">
The value of the property.
</param>
</member>
</members>
</doc>