1 //------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation.  All rights reserved.
3 //------------------------------------------------------------
4 
5 namespace System.ServiceModel.Administration
6 {
7     using System;
8     using System.ServiceModel.Description;
9     using System.Diagnostics;
10     using System.ServiceModel.Channels;
11     using System.Globalization;
12 
13     internal class ServiceEndpointAssociationProvider : ProviderBase, IWmiProvider
14     {
IWmiProvider.EnumInstances(IWmiInstances instances)15         void IWmiProvider.EnumInstances(IWmiInstances instances)
16         {
17             foreach (ServiceInfo info in new ServiceInfoCollection(ManagementExtension.Services))
18             {
19                 string serviceRef = ServiceInstanceProvider.GetReference(info);
20 
21                 foreach (EndpointInfo endpointInfo in info.Endpoints)
22                 {
23                     IWmiInstance instance = instances.NewInstance(null);
24 
25                     string endpointRef = EndpointInstanceProvider.EndpointReference(endpointInfo.ListenUri, endpointInfo.Contract.Name);
26                     instance.SetProperty(AdministrationStrings.Endpoint, endpointRef);
27                     instance.SetProperty(AdministrationStrings.Service, serviceRef);
28 
29                     instances.AddInstance(instance);
30                 }
31             }
32         }
33 
IWmiProvider.GetInstance(IWmiInstance instance)34         bool IWmiProvider.GetInstance(IWmiInstance instance)
35         {
36             string serviceRef = instance.GetProperty(AdministrationStrings.Service) as string;
37             string endpointRef = instance.GetProperty(AdministrationStrings.Endpoint) as string;
38 
39             return !String.IsNullOrEmpty(serviceRef) && !String.IsNullOrEmpty(endpointRef);
40         }
41     }
42 }
43