private void OnOnlineAnnouncement(object sender, AnnouncementEventArgs e) { EndpointDiscoveryMetadata metadata = e.EndpointDiscoveryMetadata; FindCriteria criteria = new FindCriteria(typeof(T)); if (criteria.IsMatch(metadata)) { // 指定类型的服务上线 if (!cache.Contains(metadata.Address.Uri)) { cache.Add(metadata); Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Announcement endpoint online : {0} - {1}", metadata.GetSpecifiedName(), metadata.Address.Uri)); } } }
private void OnFindProgressChanged(object sender, FindProgressChangedEventArgs e) { if (!cache.Contains(e.EndpointDiscoveryMetadata.Address.Uri)) { cache.Add(e.EndpointDiscoveryMetadata); Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Discovery proxy client find endpoint : {0} - {1}", e.EndpointDiscoveryMetadata.GetSpecifiedName(), e.EndpointDiscoveryMetadata.Address.Uri)); } }
/// <summary> /// Override this method to handle an online announcement message. /// </summary> /// <param name="messageSequence">The discovery message sequence.</param> /// <param name="endpointDiscoveryMetadata">The endpoint discovery metadata.</param> /// <param name="callback">The callback delegate to call when the operation is completed.</param> /// <param name="state">The user-defined state data.</param> /// <returns> /// A reference to the pending asynchronous operation. /// </returns> protected override IAsyncResult OnBeginOnlineAnnouncement(DiscoveryMessageSequence messageSequence, EndpointDiscoveryMetadata endpointDiscoveryMetadata, AsyncCallback callback, object state) { if (endpointDiscoveryMetadata == null) { throw new ArgumentNullException("endpointDiscoveryMetadata"); } FindCriteria criteria = new FindCriteria(typeof(T)); if (criteria.IsMatch(endpointDiscoveryMetadata)) { // 指定类型的服务上线 if (!cache.Contains(endpointDiscoveryMetadata.Address.Uri)) { cache.Add(endpointDiscoveryMetadata); Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Discovery proxy endpoint online : {0} - {1}", endpointDiscoveryMetadata.GetSpecifiedName(), endpointDiscoveryMetadata.Address.Uri)); } } return(new CompletedAsyncResult(callback, state)); }