// Token: 0x06000369 RID: 873 RVA: 0x00012A98 File Offset: 0x00010C98 private static void OnNotification(ADNotificationEventArgs args) { if (args != null) { ADNotificationAdapter.WrappedContext wrappedContext = args.Context as ADNotificationAdapter.WrappedContext; if (wrappedContext != null && wrappedContext.Callback != null) { wrappedContext.Callback.SerializedRun(args); } } }
// Token: 0x0600036E RID: 878 RVA: 0x00012BA0 File Offset: 0x00010DA0 public void SerializedRun(ADNotificationEventArgs args) { bool flag = false; lock (this) { if (!this.hasQueuedRun) { this.hasQueuedRun = true; flag = true; } } if (flag) { bool timedOut = !this.waitHandle.WaitOne(600000, false); this.RunCallback(args, timedOut); } }
// Token: 0x0600036F RID: 879 RVA: 0x00012C08 File Offset: 0x00010E08 private void RunCallback(ADNotificationEventArgs args, bool timedOut) { if (!timedOut) { lock (this) { this.hasQueuedRun = false; } try { try { this.callback(args); } catch (ADInvalidCredentialException) { ExTraceGlobals.ADNotificationsTracer.TraceError(0L, "Some component's AD Notification callback didn't catch ADInvalidCredentialException."); } catch (ADTransientException) { ExTraceGlobals.ADNotificationsTracer.TraceError(0L, "Some component's AD Notification callback didn't catch ADTransientException."); } catch (DataValidationException) { ExTraceGlobals.ADNotificationsTracer.TraceError(0L, "Some component's AD Notification callback didn't catch DataValidationException."); } return; } finally { this.waitHandle.Set(); } } Globals.LogEvent(DirectoryEventLogConstants.Tuple_DSC_EVENT_AD_NOTIFICATION_CALLBACK_TIMED_OUT, args.Type.Name, new object[] { args.Type.Name }); ExTraceGlobals.ADNotificationsTracer.TraceError(0L, "Some component's AD Notification callback hasn't returned after 10 minutes. config. change notifications ARE NO LONGER BEING DELIVERED TO SUCH COMPONENT."); }