// Token: 0x06000016 RID: 22 RVA: 0x000024CC File Offset: 0x000006CC
        private static void ConstructComponentLoadTree()
        {
            TransportAppConfig.IsMemberOfResolverConfiguration transportIsMemberOfResolverConfig = Components.TransportAppConfig.TransportIsMemberOfResolverConfig;
            IsMemberOfResolverADAdapter <RoutingAddress> .RoutingAddressResolver adAdapter       = new IsMemberOfResolverADAdapter <RoutingAddress> .RoutingAddressResolver(transportIsMemberOfResolverConfig.DisableDynamicGroups);

            Components.AgentComponent   = new AgentComponent();
            Components.RoutingComponent = new RoutingComponent();
            Components.EnhancedDns      = new EnhancedDns();
            Components.UnhealthyTargetFilterComponent = new UnhealthyTargetFilterComponent();
            Components.ProxyHubSelectorComponent      = new ProxyHubSelectorComponent();
            Components.CertificateComponent           = new CertificateComponent();
            Components.Configuration = new ConfigurationComponent(ProcessTransportRole.FrontEnd);
            Components.MessageThrottlingComponent           = new MessageThrottlingComponent();
            Components.ResourceManagerComponent             = new ResourceManagerComponent(ResourceManagerResources.PrivateBytes | ResourceManagerResources.TotalBytes);
            Components.SmtpInComponent                      = new SmtpInComponent(false);
            Components.SmtpOutConnectionHandler             = new SmtpOutConnectionHandler();
            Components.SystemCheckComponent                 = new SystemCheckComponent();
            Components.TransportIsMemberOfResolverComponent = new IsMemberOfResolverComponent <RoutingAddress>("Transport", transportIsMemberOfResolverConfig, adAdapter);
            Components.TransportMailItemLoader item = new Components.TransportMailItemLoader();
            Components.Logging                     = new Components.LoggingComponent(false, false, false, false, true);
            StorageFactory.SchemaToUse             = StorageFactory.Schema.NullSchema;
            Components.MessagingDatabase           = new MessagingDatabaseComponent();
            Components.ResourceThrottlingComponent = new ResourceThrottlingComponent(new ResourceMeteringConfig(8000, null), new ResourceThrottlingConfig(null), new ComponentsWrapper(), Components.MessagingDatabase, null, Components.Configuration, ResourceManagerResources.PrivateBytes | ResourceManagerResources.TotalBytes, ResourceObservingComponents.EnhancedDns | ResourceObservingComponents.IsMemberOfResolver | ResourceObservingComponents.SmtpIn);
            Components.PerfCountersLoader perfCountersLoader = new Components.PerfCountersLoader(false);
            Components.PerfCountersLoaderComponent = perfCountersLoader;
            ParallelTransportComponent parallelTransportComponent = new ParallelTransportComponent("AD Configuration Readers");

            parallelTransportComponent.TransportComponents.Add(item);
            parallelTransportComponent.TransportComponents.Add(Components.TransportIsMemberOfResolverComponent);
            parallelTransportComponent.TransportComponents.Add(perfCountersLoader);
            parallelTransportComponent.TransportComponents.Add(Components.Logging);
            parallelTransportComponent.TransportComponents.Add(new Components.ServicePrincipalNameRegistrar());
            parallelTransportComponent.TransportComponents.Add(Components.MessageThrottlingComponent);
            parallelTransportComponent.TransportComponents.Add(new Components.DirectTrustLoader());
            SequentialTransportComponent sequentialTransportComponent = new SequentialTransportComponent("Resource Manager");

            sequentialTransportComponent.TransportComponents.Add(Components.ResourceManagerComponent);
            ParallelTransportComponent parallelTransportComponent2 = new ParallelTransportComponent("Configuration, Certificate, and Resource Manager components");

            parallelTransportComponent2.TransportComponents.Add(sequentialTransportComponent);
            parallelTransportComponent2.TransportComponents.Add(Components.CertificateComponent);
            SequentialTransportComponent sequentialTransportComponent2 = new SequentialTransportComponent("Root Component");

            sequentialTransportComponent2.TransportComponents.Add((ITransportComponent)Components.Configuration);
            sequentialTransportComponent2.TransportComponents.Add(Components.SystemCheckComponent);
            sequentialTransportComponent2.TransportComponents.Add(parallelTransportComponent2);
            sequentialTransportComponent2.TransportComponents.Add((ITransportComponent)Components.AgentComponent);
            sequentialTransportComponent2.TransportComponents.Add(parallelTransportComponent);
            sequentialTransportComponent2.TransportComponents.Add(Components.RoutingComponent);
            sequentialTransportComponent2.TransportComponents.Add(Components.EnhancedDns);
            sequentialTransportComponent2.TransportComponents.Add(Components.UnhealthyTargetFilterComponent);
            sequentialTransportComponent2.TransportComponents.Add(Components.ProxyHubSelectorComponent);
            ParallelTransportComponent parallelTransportComponent3 = new ParallelTransportComponent("SmtpIn and SmtpOut");

            parallelTransportComponent3.TransportComponents.Add(Components.SmtpInComponent);
            parallelTransportComponent3.TransportComponents.Add(Components.SmtpOutConnectionHandler);
            sequentialTransportComponent2.TransportComponents.Add(parallelTransportComponent3);
            sequentialTransportComponent2.TransportComponents.Add(new FrontEndBackgroundProcessingThread(new FrontEndBackgroundProcessingThread.ServerComponentStateChangedHandler(FrontEndTransportService.instance.HandleServerComponentStateChanged)));
            sequentialTransportComponent2.TransportComponents.Add(Components.ResourceThrottlingComponent);
            Components.SetDatabaseComponents(sequentialTransportComponent);
            Components.SetRootComponent(sequentialTransportComponent2);
        }
        // Token: 0x0600001A RID: 26 RVA: 0x00002B88 File Offset: 0x00000D88
        private void ConstructComponentLoadTree()
        {
            TransportAppConfig.IsMemberOfResolverConfiguration transportIsMemberOfResolverConfig = Components.TransportAppConfig.TransportIsMemberOfResolverConfig;
            IsMemberOfResolverADAdapter <RoutingAddress> .RoutingAddressResolver adAdapter       = new IsMemberOfResolverADAdapter <RoutingAddress> .RoutingAddressResolver(transportIsMemberOfResolverConfig.DisableDynamicGroups);

            Components.TransportIsMemberOfResolverComponent = new IsMemberOfResolverComponent <RoutingAddress>("Transport", transportIsMemberOfResolverConfig, adAdapter);
            Components.StoreDriverSubmission = MailboxTransportSubmissionService.storeDriverSubmission;
            Components.StoreDriverSubmission.Start(false, ServiceState.Active);
            Components.DsnGenerator     = new DsnGenerator();
            Components.AgentComponent   = new AgentComponent();
            Components.RoutingComponent = new RoutingComponent();
            Components.EnhancedDns      = new EnhancedDns();
            Components.UnhealthyTargetFilterComponent = new UnhealthyTargetFilterComponent();
            Components.ProxyHubSelectorComponent      = new ProxyHubSelectorComponent();
            Components.CertificateComponent           = new CertificateComponent();
            Components.Configuration = new ConfigurationComponent(ProcessTransportRole.MailboxSubmission);
            Components.MessageThrottlingComponent           = new MessageThrottlingComponent();
            Components.ResourceManagerComponent             = new ResourceManagerComponent(ResourceManagerResources.PrivateBytes | ResourceManagerResources.TotalBytes);
            Components.SmtpInComponent                      = new SmtpInComponent(false);
            Components.SmtpOutConnectionHandler             = new SmtpOutConnectionHandler();
            Components.SystemCheckComponent                 = new SystemCheckComponent();
            Components.TransportIsMemberOfResolverComponent = new IsMemberOfResolverComponent <RoutingAddress>("Transport", transportIsMemberOfResolverConfig, adAdapter);
            Components.TransportMailItemLoader item = new Components.TransportMailItemLoader();
            Components.Logging           = new Components.LoggingComponent(true, false, false, false, false, "MSGTRKMS");
            StorageFactory.SchemaToUse   = StorageFactory.Schema.NullSchema;
            Components.MessagingDatabase = new MessagingDatabaseComponent();
            Components.PerfCountersLoader perfCountersLoader = new Components.PerfCountersLoader(false);
            Components.PerfCountersLoaderComponent = perfCountersLoader;
            Components.ResourceThrottlingComponent = new ResourceThrottlingComponent(new ResourceMeteringConfig(8000, null), new ResourceThrottlingConfig(null), new ComponentsWrapper(), Components.MessagingDatabase, null, Components.Configuration, ResourceManagerResources.PrivateBytes | ResourceManagerResources.TotalBytes, ResourceObservingComponents.EnhancedDns | ResourceObservingComponents.IsMemberOfResolver | ResourceObservingComponents.SmtpIn);
            ParallelTransportComponent parallelTransportComponent = new ParallelTransportComponent("Parallel Components");

            parallelTransportComponent.TransportComponents.Add(item);
            parallelTransportComponent.TransportComponents.Add(Components.TransportIsMemberOfResolverComponent);
            parallelTransportComponent.TransportComponents.Add(perfCountersLoader);
            parallelTransportComponent.TransportComponents.Add(Components.Logging);
            parallelTransportComponent.TransportComponents.Add(new Components.MicrosoftExchangeRecipientLoader());
            parallelTransportComponent.TransportComponents.Add(Components.DsnGenerator);
            parallelTransportComponent.TransportComponents.Add(Components.MessageThrottlingComponent);
            parallelTransportComponent.TransportComponents.Add(Components.StoreDriverSubmission);
            SequentialTransportComponent sequentialTransportComponent = new SequentialTransportComponent("Database and dependents");

            sequentialTransportComponent.TransportComponents.Add(Components.ResourceManagerComponent);
            ParallelTransportComponent parallelTransportComponent2 = new ParallelTransportComponent("Configuration Certificate and Database components");

            parallelTransportComponent2.TransportComponents.Add(sequentialTransportComponent);
            parallelTransportComponent2.TransportComponents.Add(Components.CertificateComponent);
            SequentialTransportComponent sequentialTransportComponent2 = new SequentialTransportComponent("Root Component");

            sequentialTransportComponent2.TransportComponents.Add(MailboxTransportSubmissionService.quarantineHandler);
            sequentialTransportComponent2.TransportComponents.Add(MailboxTransportSubmissionService.submissionPoisonHandler);
            sequentialTransportComponent2.TransportComponents.Add((ITransportComponent)Components.Configuration);
            sequentialTransportComponent2.TransportComponents.Add(Components.SystemCheckComponent);
            sequentialTransportComponent2.TransportComponents.Add(parallelTransportComponent2);
            sequentialTransportComponent2.TransportComponents.Add(parallelTransportComponent);
            sequentialTransportComponent2.TransportComponents.Add(Components.RoutingComponent);
            sequentialTransportComponent2.TransportComponents.Add(Components.EnhancedDns);
            sequentialTransportComponent2.TransportComponents.Add(Components.UnhealthyTargetFilterComponent);
            sequentialTransportComponent2.TransportComponents.Add(Components.ProxyHubSelectorComponent);
            ParallelTransportComponent parallelTransportComponent3 = new ParallelTransportComponent("SmtpIn and SmtpOut");

            parallelTransportComponent3.TransportComponents.Add(Components.SmtpInComponent);
            parallelTransportComponent3.TransportComponents.Add(Components.SmtpOutConnectionHandler);
            sequentialTransportComponent2.TransportComponents.Add(parallelTransportComponent3);
            sequentialTransportComponent2.TransportComponents.Add(Components.ResourceThrottlingComponent);
            Components.SetDatabaseComponents(sequentialTransportComponent);
            Components.SetRootComponent(sequentialTransportComponent2);
        }
        private void ConstructComponentLoadTree()
        {
            TransportAppConfig.IsMemberOfResolverConfiguration transportIsMemberOfResolverConfig = Components.TransportAppConfig.TransportIsMemberOfResolverConfig;
            IsMemberOfResolverADAdapter <RoutingAddress> .RoutingAddressResolver adAdapter       = new IsMemberOfResolverADAdapter <RoutingAddress> .RoutingAddressResolver(transportIsMemberOfResolverConfig.DisableDynamicGroups);

            TransportAppConfig.IsMemberOfResolverConfiguration     mailboxRulesIsMemberOfResolverConfig = Components.TransportAppConfig.MailboxRulesIsMemberOfResolverConfig;
            IsMemberOfResolverADAdapter <string> .LegacyDNResolver adAdapter2 = new IsMemberOfResolverADAdapter <string> .LegacyDNResolver(mailboxRulesIsMemberOfResolverConfig.DisableDynamicGroups);

            Components.AgentComponent   = new AgentComponent();
            Components.RoutingComponent = new RoutingComponent();
            Components.EnhancedDns      = new EnhancedDns();
            Components.DsnGenerator     = new DsnGenerator();
            Components.UnhealthyTargetFilterComponent          = new UnhealthyTargetFilterComponent();
            Components.TransportIsMemberOfResolverComponent    = new IsMemberOfResolverComponent <RoutingAddress>("Transport", transportIsMemberOfResolverConfig, adAdapter);
            Components.MailboxRulesIsMemberOfResolverComponent = new IsMemberOfResolverComponent <string>("MailboxRules", mailboxRulesIsMemberOfResolverConfig, adAdapter2);
            Components.StoreDriverDelivery        = StoreDriverDelivery.CreateStoreDriver();
            Components.Categorizer                = this.submitHandler;
            Components.CertificateComponent       = new CertificateComponent();
            Components.Configuration              = new ConfigurationComponent(ProcessTransportRole.MailboxDelivery);
            Components.MessageThrottlingComponent = new MessageThrottlingComponent();
            Components.ResourceManagerComponent   = new ResourceManagerComponent(ResourceManagerResources.PrivateBytes | ResourceManagerResources.TotalBytes);
            Components.SmtpInComponent            = new SmtpInComponent(this.IsModernSmtpStackEnabled());
            Components.SmtpOutConnectionHandler   = new SmtpOutConnectionHandler();
            Components.SystemCheckComponent       = new SystemCheckComponent();
            Components.TransportMailItemLoader item = new Components.TransportMailItemLoader();
            Components.ProxyHubSelectorComponent = new ProxyHubSelectorComponent();
            Components.PoisonMessageComponent    = new PoisonMessage();
            Components.Logging           = new Components.LoggingComponent(false, false, false, false, false);
            StorageFactory.SchemaToUse   = StorageFactory.Schema.NullSchema;
            Components.MessagingDatabase = new MessagingDatabaseComponent();
            Components.PerfCountersLoader perfCountersLoader = new Components.PerfCountersLoader(false);
            Components.PerfCountersLoaderComponent = perfCountersLoader;
            Components.ResourceThrottlingComponent = new ResourceThrottlingComponent(new ResourceMeteringConfig(8000, null), new ResourceThrottlingConfig(null), new ComponentsWrapper(), Components.MessagingDatabase, null, Components.Configuration, ResourceManagerResources.PrivateBytes | ResourceManagerResources.TotalBytes, ResourceObservingComponents.EnhancedDns | ResourceObservingComponents.IsMemberOfResolver | ResourceObservingComponents.SmtpIn);
            ParallelTransportComponent parallelTransportComponent = new ParallelTransportComponent("Parallel Group 1");

            parallelTransportComponent.TransportComponents.Add(Components.ResourceManagerComponent);
            parallelTransportComponent.TransportComponents.Add(Components.CertificateComponent);
            parallelTransportComponent.TransportComponents.Add(Components.TransportIsMemberOfResolverComponent);
            parallelTransportComponent.TransportComponents.Add(Components.MailboxRulesIsMemberOfResolverComponent);
            ParallelTransportComponent parallelTransportComponent2 = new ParallelTransportComponent("Parallel Group 2");

            parallelTransportComponent2.TransportComponents.Add(item);
            parallelTransportComponent2.TransportComponents.Add(new Components.MicrosoftExchangeRecipientLoader());
            parallelTransportComponent2.TransportComponents.Add(perfCountersLoader);
            parallelTransportComponent2.TransportComponents.Add(Components.Logging);
            parallelTransportComponent2.TransportComponents.Add(Components.PoisonMessageComponent);
            parallelTransportComponent2.TransportComponents.Add(Components.MessageThrottlingComponent);
            parallelTransportComponent2.TransportComponents.Add(Components.StoreDriverDelivery);
            parallelTransportComponent2.TransportComponents.Add((ITransportComponent)Components.AgentComponent);
            ParallelTransportComponent parallelTransportComponent3 = new ParallelTransportComponent("Parallel Group 3");

            parallelTransportComponent3.TransportComponents.Add(Components.SmtpInComponent);
            parallelTransportComponent3.TransportComponents.Add(Components.SmtpOutConnectionHandler);
            parallelTransportComponent3.TransportComponents.Add(Components.RoutingComponent);
            parallelTransportComponent3.TransportComponents.Add(Components.UnhealthyTargetFilterComponent);
            parallelTransportComponent3.TransportComponents.Add(Components.DsnGenerator);
            parallelTransportComponent3.TransportComponents.Add(DeliveryConfiguration.poisonHandler);
            Components.SetRootComponent(new SequentialTransportComponent("Root Component")
            {
                TransportComponents =
                {
                    (ITransportComponent)Components.Configuration,
                    Components.SystemCheckComponent,
                    parallelTransportComponent,
                    parallelTransportComponent2,
                    parallelTransportComponent3,
                    Components.ResourceThrottlingComponent,
                    Components.ProxyHubSelectorComponent
                }
            });
        }