Beispiel #1
0
 // 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)
 {
 }
Beispiel #2
0
        // 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;
 }