Esempio n. 1
0
        private static bool TryReadAdObjects()
        {
            ADOperationResult adoperationResult = DiagnosticsAggregationServicelet.GetLocalServer();

            if (!adoperationResult.Succeeded)
            {
                Exception exception = adoperationResult.Exception;
                DiagnosticsAggregationServicelet.EventLog.LogEvent(MSExchangeDiagnosticsAggregationEventLogConstants.Tuple_DiagnosticsAggregationServiceletLoadFailed, null, new object[]
                {
                    exception
                });
                DiagnosticsAggregationServicelet.Log.Log(DiagnosticsAggregationEvent.ServiceletError, "Getting Local server failed. Details {0}", new object[]
                {
                    exception
                });
                ExTraceGlobals.DiagnosticsAggregationTracer.TraceError <Exception>(0L, "Encountered an error while getting local server object. Details {0}.", exception);
                return(false);
            }
            ADOperationResult adoperationResult2 = DiagnosticsAggregationServicelet.GetTransportSettings();

            if (!adoperationResult2.Succeeded)
            {
                Exception exception2 = adoperationResult2.Exception;
                DiagnosticsAggregationServicelet.EventLog.LogEvent(MSExchangeDiagnosticsAggregationEventLogConstants.Tuple_DiagnosticsAggregationServiceletLoadFailed, null, new object[]
                {
                    exception2
                });
                DiagnosticsAggregationServicelet.Log.Log(DiagnosticsAggregationEvent.ServiceletError, "Getting transportsettings failed. Details {0}", new object[]
                {
                    exception2
                });
                ExTraceGlobals.DiagnosticsAggregationTracer.TraceError <Exception>(0L, "Encountered an error while getting TransportSettings configuration. Details {0}.", exception2);
                return(false);
            }
            return(true);
        }
Esempio n. 2
0
        private void HostService()
        {
            ExTraceGlobals.DiagnosticsAggregationTracer.TraceDebug(0L, "DiagnosticsAggregationServicelet HostService started.");
            DiagnosticsAggregationServicelet.log.Start(DiagnosticsAggregationServicelet.config);
            if (!DiagnosticsAggregationServicelet.TryReadAdObjects())
            {
                return;
            }
            ServiceHost serviceHost = null;

            try
            {
                this.RegisterForChangeNotifications();
                if (!this.TryHostDiagnosticsWebService(false, out serviceHost))
                {
                    return;
                }
                this.StartPeriodicDagAggregation();
                while (!base.StopEvent.WaitOne(TimeSpan.FromMinutes(1.0)))
                {
                    if (DiagnosticsAggregationServicelet.transportSettingsChanged)
                    {
                        DiagnosticsAggregationServicelet.transportSettingsChanged = false;
                        TransportConfigContainer transportConfigContainer = DiagnosticsAggregationServicelet.TransportSettings;
                        if (DiagnosticsAggregationServicelet.GetTransportSettings() != ADOperationResult.Success)
                        {
                            DiagnosticsAggregationServicelet.Log.Log(DiagnosticsAggregationEvent.ServiceletError, "Fetching transport settings failed", new object[0]);
                        }
                        else if (transportConfigContainer.DiagnosticsAggregationServicePort != DiagnosticsAggregationServicelet.TransportSettings.DiagnosticsAggregationServicePort)
                        {
                            DiagnosticsAggregationServicelet.Log.Log(DiagnosticsAggregationEvent.Information, "Webservice port is changed from {0} to {1}. Hosting the webservice with the new bindings.", new object[]
                            {
                                transportConfigContainer.DiagnosticsAggregationServicePort,
                                DiagnosticsAggregationServicelet.TransportSettings.DiagnosticsAggregationServicePort
                            });
                            ServiceHost serviceHost2 = null;
                            if (this.TryHostDiagnosticsWebService(true, out serviceHost))
                            {
                                ServiceHost client = serviceHost;
                                serviceHost = serviceHost2;
                                WcfUtils.DisposeWcfClientGracefully(client, false);
                            }
                            else
                            {
                                DiagnosticsAggregationServicelet.Log.Log(DiagnosticsAggregationEvent.ServiceletError, "Hosting the webservice with new bindings did not succeed.", new object[0]);
                            }
                        }
                        else
                        {
                            DiagnosticsAggregationServicelet.Log.Log(DiagnosticsAggregationEvent.Information, "Webservice port did not change.", new object[0]);
                        }
                    }
                }
            }
            finally
            {
                if (DiagnosticsAggregationServicelet.groupQueuesDataProvider != null)
                {
                    DiagnosticsAggregationServicelet.groupQueuesDataProvider.Stop();
                }
                if (DiagnosticsAggregationServicelet.localQueuesDataProvider != null)
                {
                    DiagnosticsAggregationServicelet.localQueuesDataProvider.Stop();
                }
                WcfUtils.DisposeWcfClientGracefully(serviceHost, false);
                this.UnregisterADNotifications();
                DiagnosticsAggregationServicelet.log.Stop();
            }
            ExTraceGlobals.DiagnosticsAggregationTracer.TraceDebug(0L, "HostService Stopped.");
        }