/// <summary>
        /// Adds a physical link to the device of this root entry.
        /// </summary>
        /// <param name="endpoint">Local endpoint to be used for this link.</param>
        /// <param name="descriptionLocation">Location to retrieve the description from for this link.</param>
        /// <param name="httpVersion">HTTP version to use to retrieve the description for this link.</param>
        /// <param name="searchPort">Search port to use for search queries at the device for this link.</param>
        /// <returns>Created <see cref="LinkData"/> instance.</returns>
        internal LinkData AddOrUpdateLink(EndpointConfiguration endpoint, string descriptionLocation,
                                          HTTPVersion httpVersion, int searchPort)
        {
            LinkData result;

            if (!_linkConfigurations.TryGetValue(descriptionLocation, out result))
            {
                _linkConfigurations.Add(descriptionLocation, result = new LinkData(endpoint, descriptionLocation, httpVersion, searchPort));
            }
            if (_preferredLink == null || result.IsNearer(_preferredLink))
            {
                _preferredLink = result;
            }
            return(result);
        }
 /// <summary>
 /// Clears all link configurations. That is necessary when a device has rebooted.
 /// </summary>
 internal void ClearLinks()
 {
     _preferredLink = null;
     _linkConfigurations.Clear();
 }