/// <summary> /// Creates an instance of the CommonSubscriptionData class and sets the notification channel and the /// shared key information. /// </summary> /// /// <param name="notificationChannel">The channel to use for notifications.</param> /// <param name="sharedKeyInfo">The shared key to use for authentication.</param> /// /// <exception cref="ArgumentNullException"> /// The <paramref name="notificationChannel"/> parameter is <b>null</b>. /// </exception> /// <exception cref="ArgumentNullException"> /// The <paramref name="sharedKeyInfo"/> parameter is <b>null</b>. /// </exception> public CommonSubscriptionData( NotificationChannel notificationChannel, NotificationAuthenticationSharedKeyInfo sharedKeyInfo) { Validator.ThrowIfArgumentNull(notificationChannel, "notificationChannel", "NotificationChannelNull"); Validator.ThrowIfArgumentNull(sharedKeyInfo, "sharedKeyInfo", "ArgumentNull"); _notificationChannel = notificationChannel; _sharedKeyInfo = sharedKeyInfo; }
/// <summary> /// Creates an instance of the CommonSubscriptionData class and sets the notification channel, the shared /// key information and the unique identifier for the subscription. /// </summary> /// /// <param name="notificationChannel">The channel to use for notifications.</param> /// <param name="sharedKeyInfo">The shared key to use for authentication.</param> /// <param name="id">The id of the subscription.</param> /// /// <exception cref="ArgumentNullException"> /// The <paramref name="notificationChannel"/> parameter is <b>null</b>. /// </exception> /// <exception cref="ArgumentNullException"> /// The <paramref name="sharedKeyInfo"/> parameter is <b>null</b>. /// </exception> /// <exception cref="ArgumentException"> /// The <paramref name="id"/> parameter is an empty GUID. /// </exception> public CommonSubscriptionData( NotificationChannel notificationChannel, NotificationAuthenticationSharedKeyInfo sharedKeyInfo, Guid id) : this(notificationChannel, sharedKeyInfo) { Validator.ThrowArgumentExceptionIf(id == Guid.Empty, "id", "EmptyGuid"); _id = id; }
/// <summary> /// Populate the CommonSubscriptionData instance from XML. /// </summary> /// <param name="navigator">The XPathNavigator.</param> /// /// <exception cref="ArgumentNullException"> /// The <paramref name="navigator"/> parameter is <b>null</b>. /// </exception> /// <exception cref="ArgumentException"> /// The <paramref name="navigator"/> parameter does not contain a "common" node. /// </exception> public void ParseXml(XPathNavigator navigator) { Validator.ThrowIfNavigatorNull(navigator); XPathNavigator commonNav = navigator.SelectSingleNode("common"); Validator.ThrowArgumentExceptionIf(commonNav == null, "navigator", "MissingCommonNode"); XPathNavigator idNav = commonNav.SelectSingleNode("id"); if (idNav != null) { _id = new Guid(idNav.Value); } XPathNavigator notificationAuthNode = commonNav.SelectSingleNode("notification-authentication-info"); if (notificationAuthNode != null) { XPathNavigator sharedKeyNav = notificationAuthNode.SelectSingleNode("hv-eventing-shared-key"); _sharedKeyInfo = new NotificationAuthenticationSharedKeyInfo(); _sharedKeyInfo.ParseXml(sharedKeyNav); } XPathNavigator channelNav = commonNav.SelectSingleNode("notification-channel"); if (channelNav != null) { XPathNodeIterator children = channelNav.SelectChildren(XPathNodeType.Element); XPathNavigator child = children.Current; _notificationChannel = NotificationChannel.Deserialize(child); } }