// Token: 0x0600027B RID: 635 RVA: 0x0000E446 File Offset: 0x0000C646 public EventDispatcherPublic(AssistantCollectionEntry assistant, EventControllerPublic controller, ThrottleGovernor governor) : base(assistant, new MailboxGovernor(controller.Governor, new Throttle("EventDispatcherPublic", controller.Throttle.OpenThrottleValue, controller.Throttle)), controller) { }
// Token: 0x060001F1 RID: 497 RVA: 0x00009F98 File Offset: 0x00008198 public void Start() { ExTraceGlobals.EventControllerTracer.TraceDebug <EventController>((long)this.GetHashCode(), "{0}: Starting", this); bool flag = false; try { AIBreadcrumbs.StartupTrail.Drop("Starting database: " + this.DatabaseInfo.Guid); this.DatabaseBookmark = this.eventAccess.GetDatabaseBookmark(); Btree <Guid, Bookmark> btree = this.eventAccess.LoadAllMailboxBookmarks(this.DatabaseBookmark); bool flag2 = false; int num = 0; using (List <AssistantCollectionEntry> .Enumerator enumerator = this.assistants.ToList <AssistantCollectionEntry>().GetEnumerator()) { while (enumerator.MoveNext()) { AssistantCollectionEntry assistant = enumerator.Current; do { try { base.CatchMeIfYouCan(delegate { assistant.Start(EventBasedStartInfo.NoInformation); }, assistant.Name); } catch (AIException ex) { if (num >= 1 || this.assistants.Count <= 1) { throw; } if (!flag2) { ExTraceGlobals.EventControllerTracer.TraceError <AssistantCollectionEntry, AIException>((long)this.GetHashCode(), "Event Based Assistant {0} cannot start due to Exception: {1}, Retrying now", assistant, ex); SingletonEventLogger.Logger.LogEvent(AssistantsEventLogConstants.Tuple_RetryAssistantFailedToStart, null, new object[] { assistant.Identity.ToString(), ex.ToString(), EventController.sleepStartingThread.TotalSeconds.ToString() }); Thread.Sleep(EventController.sleepStartingThread); flag2 = true; } else { ExTraceGlobals.EventControllerTracer.TraceError <AssistantCollectionEntry, AIException>((long)this.GetHashCode(), "Event Based Assistant {0} cannot start after retry, due to Exception: {1}, will not start it anymore", assistant, ex); SingletonEventLogger.Logger.LogEvent(AssistantsEventLogConstants.Tuple_AssistantFailedToStart, null, new object[] { assistant.Identity.ToString(), ex.ToString() }); flag2 = false; this.assistants.RemoveAssistant(assistant); num++; } } }while (flag2); } } this.InitializeEventDispatchers(btree); this.timeToSaveWatermarks = DateTime.UtcNow + Configuration.ActiveWatermarksSaveInterval; ExTraceGlobals.EventControllerTracer.TraceDebug <EventController, DateTime>((long)this.GetHashCode(), "{0}: Next time to save watermarks: {1}", this, this.timeToSaveWatermarks); long num2 = long.MaxValue; foreach (Bookmark bookmark in btree) { num2 = Math.Min(num2, bookmark.GetLowestWatermark()); } num2 = Math.Min(this.DatabaseBookmark.GetLowestWatermark(), num2); ExTraceGlobals.EventControllerTracer.TraceDebug <EventController, long>((long)this.GetHashCode(), "{0}: Smallest watermark after initialization is: {1}", this, num2); this.HighestEventPolled = num2; this.timer = new Timer(new TimerCallback(this.TimerRoutine), null, TimeSpan.Zero, Configuration.EventPollingInterval); flag = true; } finally { if (!flag) { RpcHangDetector rpcHangDetector = RpcHangDetector.Create(); rpcHangDetector.InvokeUnderHangDetection(delegate(HangDetector hangDetector) { AIBreadcrumbs.StatusTrail.Drop("Did not succeed to start event controller, stopping."); this.RequestStop(rpcHangDetector); this.WaitUntilAssistantsStopped(); AIBreadcrumbs.StatusTrail.Drop("Exiting stop on fail to start event controller to start."); }); } else { AIBreadcrumbs.StartupTrail.Drop("Finished starting " + this.DatabaseInfo.Guid); } } base.TracePfd("PFD AIS {0} {1}: Started successfully", new object[] { 21335, this }); }
// Token: 0x06000255 RID: 597 RVA: 0x0000D178 File Offset: 0x0000B378 public EventDispatcherPrivate(MailboxDispatcher parentMailboxDispatcher, AssistantCollectionEntry assistant, EventControllerPrivate controller, long watermark) : base(assistant, new MailboxGovernor(controller.Governor, new Throttle("EventDispatcherPrivate", 1, controller.Throttle)), controller) { this.parentMailboxDispatcher = parentMailboxDispatcher; this.committedWatermark = watermark; this.highestEventQueued = watermark; }
// Token: 0x0600023E RID: 574 RVA: 0x0000C74F File Offset: 0x0000A94F protected EventDispatcher(AssistantCollectionEntry assistant, ThrottleGovernor governor, EventController controller) : base(governor) { this.Assistant = assistant; this.controller = controller; }