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));
                }
            }
        }
Esempio n. 2
0
 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));
        }