internal static void FillEndpointInfo(System.ServiceModel.Administration.EndpointInfo endpoint, IWmiInstance instance)
 {
     instance.SetProperty("CounterInstanceName", PerformanceCounters.PerformanceCountersEnabled ? EndpointPerformanceCountersBase.CreateFriendlyInstanceName(endpoint.ServiceName, endpoint.Contract.Name, endpoint.Address.AbsoluteUri.ToUpperInvariant()) : string.Empty);
     instance.SetProperty("Name", endpoint.Name);
     instance.SetProperty("ContractName", endpoint.Contract.Name);
     FillAddressInfo(endpoint, instance);
     FillContractInfo(endpoint, instance);
     FillBindingInfo(endpoint, instance);
     FillBehaviorsInfo(endpoint, instance);
 }
        private string GetOperationCounterInstanceName(string operationName, IWmiInstance endpointInstance)
        {
            string property     = (string)endpointInstance.GetProperty("ListenUri");
            string contractName = (string)endpointInstance.GetProperty("ContractName");

            System.ServiceModel.Administration.EndpointInfo info = this.FindEndpoint(property, contractName);
            string str3 = string.Empty;

            if (PerformanceCounters.PerformanceCountersEnabled && (info != null))
            {
                str3 = OperationPerformanceCountersBase.CreateFriendlyInstanceName(info.ServiceName, info.Contract.Name, operationName, info.Address.AbsoluteUri.ToUpperInvariant());
            }
            return(str3);
        }
        private static void FillBehaviorsInfo(System.ServiceModel.Administration.EndpointInfo info, IWmiInstance instance)
        {
            List <IWmiInstance> list = new List <IWmiInstance>(info.Behaviors.Count);

            foreach (IEndpointBehavior behavior in info.Behaviors)
            {
                IWmiInstance instance2;
                FillBehaviorInfo(behavior, instance, out instance2);
                if (instance2 != null)
                {
                    list.Add(instance2);
                }
            }
            instance.SetProperty("Behaviors", list.ToArray());
        }
        private static void FillAddressInfo(System.ServiceModel.Administration.EndpointInfo endpoint, IWmiInstance instance)
        {
            string[] info = new string[endpoint.Headers.Count];
            int      num  = 0;

            foreach (AddressHeader header in endpoint.Headers)
            {
                PlainXmlWriter writer = new PlainXmlWriter();
                header.WriteAddressHeader(writer);
                info[num++] = writer.ToString();
            }
            ProviderBase.FillCollectionInfo(info, instance, "AddressHeaders");
            instance.SetProperty("Address", (endpoint.Address == null) ? string.Empty : endpoint.Address.ToString());
            instance.SetProperty("ListenUri", (endpoint.ListenUri == null) ? string.Empty : endpoint.ListenUri.ToString());
            instance.SetProperty("AddressIdentity", (endpoint.Identity == null) ? string.Empty : endpoint.Identity.ToString());
        }
        bool IWmiProvider.GetInstance(IWmiInstance instance)
        {
            bool flag = false;

            if (this.OwnInstance(instance))
            {
                string property     = (string)instance.GetProperty("ListenUri");
                string contractName = (string)instance.GetProperty("ContractName");
                System.ServiceModel.Administration.EndpointInfo endpoint = this.FindEndpoint(property, contractName);
                if (endpoint != null)
                {
                    FillEndpointInfo(endpoint, instance);
                    flag = true;
                }
            }
            return(flag);
        }
        private static void FillBindingInfo(System.ServiceModel.Administration.EndpointInfo endpoint, IWmiInstance instance)
        {
            IWmiInstance instance2 = instance.NewInstance("Binding");

            IWmiInstance[] instanceArray = new IWmiInstance[endpoint.Binding.Elements.Count];
            for (int i = 0; i < instanceArray.Length; i++)
            {
                instanceArray[i] = instance2;
                FillBindingInfo(endpoint.Binding.Elements[i], ref instanceArray[i]);
            }
            instance2.SetProperty("BindingElements", instanceArray);
            instance2.SetProperty("Name", endpoint.Binding.Name);
            instance2.SetProperty("Namespace", endpoint.Binding.Namespace);
            instance2.SetProperty("CloseTimeout", endpoint.Binding.CloseTimeout);
            instance2.SetProperty("Scheme", endpoint.Binding.Scheme);
            instance2.SetProperty("OpenTimeout", endpoint.Binding.OpenTimeout);
            instance2.SetProperty("ReceiveTimeout", endpoint.Binding.ReceiveTimeout);
            instance2.SetProperty("SendTimeout", endpoint.Binding.SendTimeout);
            instance.SetProperty("Binding", instance2);
        }
 private static void FillContractInfo(System.ServiceModel.Administration.EndpointInfo endpoint, IWmiInstance instance)
 {
     instance.SetProperty("Contract", ContractInstanceProvider.ContractReference(endpoint.Contract.Name));
 }