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); }
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."); }