コード例 #1
0
 internal MExConfiguration(Datacenter.ExchangeSku exchangeSku, ProcessTransportRole transportProcessRole, string installPath)
 {
     this.monitoringOptions    = new MonitoringOptions();
     this.agentList            = new List <AgentInfo>();
     this.exchangeSku          = exchangeSku;
     this.transportProcessRole = transportProcessRole;
     this.installPath          = installPath;
 }
コード例 #2
0
 public MExPerfCounters(ProcessTransportRole processRole, AgentRecord[] agentRecords)
 {
     this.agentRecords = agentRecords;
     MExCounters.SetCategoryName(MExPerfCounters.GetPerformanceCounterCategory(processRole));
     this.synchronousAgentProcessorUsageSlidingCounters  = new SlidingAverageCounter[this.agentRecords.Length];
     this.asynchronousAgentProcessorUsageSlidingCounters = new SlidingAverageCounter[this.agentRecords.Length];
     for (int i = 0; i < this.agentRecords.Length; i++)
     {
         MExCounters.GetInstance(this.agentRecords[i].Name);
         this.synchronousAgentProcessorUsageSlidingCounters[this.agentRecords[i].SequenceNumber]  = new SlidingAverageCounter(MExPerfCounters.slidingWindowLengthForAgentProcessorUsageCounters, MExPerfCounters.bucketLengthForAgentProcessorUsageCounters);
         this.asynchronousAgentProcessorUsageSlidingCounters[this.agentRecords[i].SequenceNumber] = new SlidingAverageCounter(MExPerfCounters.slidingWindowLengthForAgentProcessorUsageCounters, MExPerfCounters.bucketLengthForAgentProcessorUsageCounters);
     }
 }
コード例 #3
0
ファイル: MExEvents.cs プロジェクト: YHZX2013/exchange_diff
 public static void Initialize(string configFilePath, ProcessTransportRole role, LatencyAgentGroup latencyAgentGroup, string agentGroup)
 {
     if (MExEvents.mexRuntime != null)
     {
         throw new InvalidOperationException("Cannot Initialize() again without calling Shutdown() first");
     }
     MExEvents.processTransportRole = role;
     MExEvents.latencyAgentGroup    = latencyAgentGroup;
     MExEvents.agentGroup           = agentGroup;
     MExEvents.mexRuntime           = new MExRuntime();
     MExEvents.mexRuntime.Initialize(configFilePath, agentGroup, role, ConfigurationContext.Setup.InstallPath, new FactoryInitializer(ProcessAccessManager.RegisterAgentFactory));
     AgentLatencyTracker.RegisterMExRuntime(latencyAgentGroup, MExEvents.mexRuntime);
 }
コード例 #4
0
ファイル: MExRuntime.cs プロジェクト: YHZX2013/exchange_diff
 public void Initialize(string configFile, string agentGroup, ProcessTransportRole processTransportRole, string installPath, FactoryInitializer factoryInitializer = null)
 {
     if (this.runtimeState != 0)
     {
         ExTraceGlobals.InitializeTracer.TraceError <int>((long)this.GetHashCode(), this.InstanceNameFormatted + "invalid state for initialization: {0}", this.runtimeState);
         throw new InvalidOperationException(MExRuntimeStrings.InvalidState);
     }
     this.config = new MExConfiguration(processTransportRole, installPath);
     this.config.Load(configFile);
     this.settings     = new RuntimeSettings(this.config, agentGroup, factoryInitializer);
     this.perfCounters = new MExPerfCounters(processTransportRole, this.settings.CreateDefaultAgentOrder());
     Interlocked.CompareExchange(ref this.runtimeState, 1, 0);
     ExTraceGlobals.InitializeTracer.TraceDebug <string, string>((long)this.GetHashCode(), this.InstanceNameFormatted + "initialized ('{0}', '{1}')", configFile, agentGroup);
 }
コード例 #5
0
        private void EnsureMExConfigLoaded()
        {
            if (this.mexConfig != null)
            {
                return;
            }
            Server serverObject = this.GetServerObject();

            if (serverObject == null || (!serverObject.IsEdgeServer && !serverObject.IsHubTransportServer && !serverObject.IsFrontendTransportServer))
            {
                this.ThrowRoleRestrictionError();
            }
            this.SetMExConfigPath();
            ProcessTransportRole transportProcessRole = ProcessTransportRole.Hub;

            if (serverObject.IsEdgeServer)
            {
                transportProcessRole = ProcessTransportRole.Edge;
            }
            else if (!serverObject.IsHubTransportServer && serverObject.IsFrontendTransportServer)
            {
                transportProcessRole = ProcessTransportRole.FrontEnd;
            }
            this.mexConfig = new MExConfiguration(transportProcessRole, ConfigurationContext.Setup.InstallPath);
            try
            {
                this.mexConfig.Load(this.mexConfigPath);
            }
            catch (ExchangeConfigurationException ex)
            {
                if (ex.InnerException is FileNotFoundException)
                {
                    if (!(this is InstallTransportAgent))
                    {
                        base.ThrowTerminatingError(ex, ErrorCategory.ReadError, null);
                    }
                    this.missingConfigFile = true;
                }
                else
                {
                    base.ThrowTerminatingError(ex, ErrorCategory.ReadError, null);
                }
            }
        }
コード例 #6
0
        private static string GetPerformanceCounterCategory(ProcessTransportRole processRole)
        {
            switch (processRole)
            {
            case ProcessTransportRole.Hub:
            case ProcessTransportRole.Edge:
                return("MSExchangeTransport Extensibility Agents");

            case ProcessTransportRole.FrontEnd:
                return("MSExchangeFrontEndTransport Extensibility Agents");

            case ProcessTransportRole.MailboxSubmission:
                return("MSExchange Submission Extensibility Agents");

            case ProcessTransportRole.MailboxDelivery:
                return("MSExchange Delivery Extensibility Agents");

            default:
                throw new InvalidOperationException(string.Format("Performance counter category not defined for process role {0}", processRole));
            }
        }
コード例 #7
0
 internal MExConfiguration(ProcessTransportRole transportProcessRole, string installPath) : this(MExConfiguration.GetExchangeSku(), transportProcessRole, installPath)
 {
 }
コード例 #8
0
        private string GetXmlMarkups(Datacenter.ExchangeSku exchangeSku, ProcessTransportRole transportProcessRole)
        {
            string result = null;

            switch (exchangeSku)
            {
            case Datacenter.ExchangeSku.Enterprise:
            case Datacenter.ExchangeSku.DatacenterDedicated:
                switch (transportProcessRole)
                {
                case ProcessTransportRole.Hub:
                    result = "enterpriseBridgehead";
                    break;

                case ProcessTransportRole.Edge:
                    result = "enterpriseGateway";
                    break;

                case ProcessTransportRole.FrontEnd:
                    result = "enterpriseFrontend";
                    break;

                case ProcessTransportRole.MailboxSubmission:
                    result = "enterpriseMailboxSubmission";
                    break;

                case ProcessTransportRole.MailboxDelivery:
                    result = "enterpriseMailboxDelivery";
                    break;
                }
                break;

            case Datacenter.ExchangeSku.ExchangeDatacenter:
                switch (transportProcessRole)
                {
                case ProcessTransportRole.Hub:
                    result = "exchangeDatacenterBridgehead";
                    break;

                case ProcessTransportRole.FrontEnd:
                    result = "exchangeDatacenterFrontend";
                    break;

                case ProcessTransportRole.MailboxSubmission:
                    result = "exchangeDatacenterMailboxSubmission";
                    break;

                case ProcessTransportRole.MailboxDelivery:
                    result = "exchangeDatacenterMailboxDelivery";
                    break;
                }
                break;

            case Datacenter.ExchangeSku.PartnerHosted:
                switch (transportProcessRole)
                {
                case ProcessTransportRole.Hub:
                    result = "partnerHostedBridgehead";
                    break;

                case ProcessTransportRole.Edge:
                    result = "partnerHostedGateway";
                    break;

                case ProcessTransportRole.MailboxSubmission:
                    result = "partnerHostedMailboxSubmission";
                    break;

                case ProcessTransportRole.MailboxDelivery:
                    result = "partnerHostedMailboxDelivery";
                    break;
                }
                break;

            case Datacenter.ExchangeSku.ForefrontForOfficeDatacenter:
                switch (transportProcessRole)
                {
                case ProcessTransportRole.Hub:
                    result = "forefrontForOfficeBridgehead";
                    break;

                case ProcessTransportRole.FrontEnd:
                    result = "forefrontForOfficeFrontend";
                    break;
                }
                break;
            }
            return(result);
        }