Пример #1
0
        // Token: 0x0600011A RID: 282 RVA: 0x00008870 File Offset: 0x00006A70
        private void Initialize(Server server, ObjectSecurity adminSecurity)
        {
            ExTraceGlobals.ServiceTracer.TraceDebug((long)this.GetHashCode(), "MsExchangeLogSearch service is entering Initialize");
            bool flag = false;

            LogSearchService.LogSearchServiceStartState logSearchServiceStartState = LogSearchService.LogSearchServiceStartState.Init;
            try
            {
                this.sessionManager = new LogSessionManager();
                this.sessionManager.Start();
                logSearchServiceStartState = LogSearchService.LogSearchServiceStartState.SessionManagerStartup;
                if (server.IsHubTransportServer)
                {
                    EHALogSearchComponent.Start(server.Name);
                }
                if (LogSearchAppConfig.Instance.HealthMonitoringLog == null)
                {
                    ExTraceGlobals.ServiceTracer.TraceError((long)this.GetHashCode(), "Health monitoring log could not be initialized, service will be stopped");
                }
                else
                {
                    this.healthLog = new HealthMonitoringLog();
                    this.healthLog.Configure(LogSearchAppConfig.Instance.HealthMonitoringLog);
                    logSearchServiceStartState = LogSearchService.LogSearchServiceStartState.HealthMonitoringLogStartup;
                    this.ConfigureTransportSyncComponent(server);
                    logSearchServiceStartState = LogSearchService.LogSearchServiceStartState.SyncHealthLogStartup;
                    if (server.MessageTrackingLogPath != null && !string.IsNullOrEmpty(server.MessageTrackingLogPath.PathName))
                    {
                        this.messageTrackingLog = new Log(MessageTrackingSchema.MessageTrackingEvent, server.MessageTrackingLogPath.ToString(), "MSGTRK", server.Name, "LOG", LogSearchIndexingParameters.MessageTrackingIndexPercentageByPrefix);
                        this.messageTrackingLog.Config(server.MessageTrackingLogPath.ToString());
                        this.messageTrackingLog.Start();
                        this.sessionManager.RegisterLog("MSGTRK", this.messageTrackingLog);
                        logSearchServiceStartState = LogSearchService.LogSearchServiceStartState.MessageTrackingLogStartup;
                    }
                    else if (!server.IsClientAccessServer)
                    {
                        LogSearchService.logger.LogEvent(MSExchangeTransportLogSearchEventLogConstants.Tuple_LogSearchNullOrEmptyLogPath, null, new object[0]);
                        EventNotificationItem.Publish(ExchangeComponent.Transport.Name, "TransportLogSearch", null, "The Microsoft Exchange Transport Log Search service failed because the parameter that sets the location of the message tracking logs was set to an invalid value.", ResultSeverityLevel.Warning, false);
                    }
                    ActiveDirectoryRights accessMask = ActiveDirectoryRights.GenericRead;
                    bool flag2 = !server.IsHubTransportServer && !server.IsMailboxServer;
                    LogSearchService.logSearchServer = (LogSearchServer)RpcServerBase.RegisterServer(typeof(LogSearchServer), adminSecurity, accessMask, flag2);
                    ExTraceGlobals.ServiceTracer.TraceDebug <bool>((long)this.GetHashCode(), "RPC is registered. LocalRpcOnly = {0}", flag2);
                    LogSearchService.logSearchServer.SessionManager = this.sessionManager;
                    flag = true;
                }
            }
            finally
            {
                if (!flag)
                {
                    if (this.sessionManager != null)
                    {
                        this.sessionManager.Stop();
                        this.sessionManager = null;
                    }
                    if (this.messageTrackingLog != null)
                    {
                        this.messageTrackingLog.Stop();
                        this.messageTrackingLog = null;
                    }
                    if (this.healthLog != null)
                    {
                        this.healthLog.Dispose();
                        this.healthLog = null;
                    }
                    switch (logSearchServiceStartState)
                    {
                    case LogSearchService.LogSearchServiceStartState.Init:
                    {
                        string text = "MsExchangeLogSearch services Initialize failure because session manager startup failed";
                        ExTraceGlobals.ServiceTracer.TraceError((long)this.GetHashCode(), text);
                        LogSearchService.logger.LogEvent(MSExchangeTransportLogSearchEventLogConstants.Tuple_LogSearchServiceStartFailureInit, null, new object[0]);
                        EventNotificationItem.Publish(ExchangeComponent.Transport.Name, "TransportLogSearch", null, text, ResultSeverityLevel.Error, false);
                        break;
                    }

                    case LogSearchService.LogSearchServiceStartState.SessionManagerStartup:
                    {
                        string text = "MsExchangeLogSearch services Initialize failure because message tracking log failed";
                        ExTraceGlobals.ServiceTracer.TraceError((long)this.GetHashCode(), text);
                        LogSearchService.logger.LogEvent(MSExchangeTransportLogSearchEventLogConstants.Tuple_LogSearchServiceStartFailureSessionManager, null, new object[0]);
                        EventNotificationItem.Publish(ExchangeComponent.Transport.Name, "TransportLogSearch", null, text, ResultSeverityLevel.Error, false);
                        break;
                    }

                    case LogSearchService.LogSearchServiceStartState.MessageTrackingLogStartup:
                    {
                        string text = "MsExchangeLogSearch services Initialize failure because RPC server startup failed";
                        ExTraceGlobals.ServiceTracer.TraceError((long)this.GetHashCode(), text);
                        LogSearchService.logger.LogEvent(MSExchangeTransportLogSearchEventLogConstants.Tuple_LogSearchServiceStartFailureMTGLog, null, new object[0]);
                        EventNotificationItem.Publish(ExchangeComponent.Transport.Name, "TransportLogSearch", null, text, ResultSeverityLevel.Error, false);
                        break;
                    }
                    }
                }
            }
        }
 // Token: 0x0600016A RID: 362 RVA: 0x00009E0C File Offset: 0x0000800C
 public static void Start()
 {
     EHALogSearchComponent.Start(EHALogSearchComponent.serverName);
 }