Example #1
0
        // Token: 0x0600000A RID: 10 RVA: 0x00002730 File Offset: 0x00000930
        private static void MainUnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs eventArgs)
        {
            MailboxTransportDeliveryService.diag.TraceDebug(0L, "MainUnhandledExceptionHandler");
            if (MailboxTransportDeliveryService.isExiting)
            {
                Environment.Exit(0);
            }
            if (Components.IsActive)
            {
                Components.OnUnhandledException((Exception)eventArgs.ExceptionObject);
                PoisonMessage.SavePoisonContext((Exception)eventArgs.ExceptionObject);
                DeliveryConfiguration.Instance.PoisonHandler.SavePoisonContext();
                MailboxTransportEventLogger.LogEvent(MSExchangeDeliveryEventLogConstants.Tuple_DeliveryPoisonMessage, null, new string[]
                {
                    PoisonHandler <DeliveryPoisonContext> .Context.ToString(),
                    eventArgs.ExceptionObject.ToString()
                });
            }
            int num = Interlocked.Exchange(ref MailboxTransportDeliveryService.busyUnhandledException, 1);

            if (num == 1)
            {
                return;
            }
            ExWatson.HandleException(sender, eventArgs);
            MailboxTransportDeliveryService.diag.TraceDebug(0L, "Done processing unhandled exception. Return to CLR.");
        }
Example #2
0
        public void TransferToBus(IAdvancedBus advancedBus)
        {
            var rebusEvents = advancedBus.Events;

            if (MessageSent != null)
            {
                foreach (var listener in MessageSent.GetInvocationList().Cast <MessageSentEventHandler>())
                {
                    rebusEvents.MessageSent += listener;
                }
            }

            if (BeforeMessage != null)
            {
                foreach (var listener in BeforeMessage.GetInvocationList().Cast <BeforeMessageEventHandler>())
                {
                    rebusEvents.BeforeMessage += listener;
                }
            }

            if (AfterMessage != null)
            {
                foreach (var listener in AfterMessage.GetInvocationList().Cast <AfterMessageEventHandler>())
                {
                    rebusEvents.AfterMessage += listener;
                }
            }

            if (BeforeTransportMessage != null)
            {
                foreach (var listener in BeforeTransportMessage.GetInvocationList().Cast <BeforeTransportMessageEventHandler>())
                {
                    rebusEvents.BeforeTransportMessage += listener;
                }
            }

            if (AfterTransportMessage != null)
            {
                foreach (var listener in AfterTransportMessage.GetInvocationList().Cast <AfterTransportMessageEventHandler>())
                {
                    rebusEvents.AfterTransportMessage += listener;
                }
            }

            if (PoisonMessage != null)
            {
                foreach (var listener in PoisonMessage.GetInvocationList().Cast <PoisonMessageEventHandler>())
                {
                    rebusEvents.PoisonMessage += listener;
                }
            }
        }
        public void Start()
        {
            using (ConsoleColor.Cyan.AsForegroundColor())
            {
                Console.WriteLine("Sending PoisonMessage at startup...");

                var message = new PoisonMessage()
                {
                    Content = "this is expected to fail :-)"
                };

                this.Bus.Send(message);

                Console.WriteLine("PoisonMessage sent!");
            }
        }
Example #4
0
        // Token: 0x0600000F RID: 15 RVA: 0x00002494 File Offset: 0x00000694
        private static void MainUnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs eventArgs)
        {
            ExTraceGlobals.GeneralTracer.TraceDebug(0L, "MainUnhandledExceptionHandler");
            if (Program.main.isExiting)
            {
                Environment.Exit(0);
            }
            int num = Interlocked.Exchange(ref Program.main.busyUnhandledException, 1);

            if (num == 1)
            {
                return;
            }
            string text = null;

            if (Program.main.transportComponents != null)
            {
                text = Components.OnUnhandledException((Exception)eventArgs.ExceptionObject);
            }
            if (Components.IsActive)
            {
                PoisonMessage.SavePoisonContext((Exception)eventArgs.ExceptionObject);
            }
            ExTraceGlobals.GeneralTracer.TraceDebug(0L, "Process unhandled exception");
            WatsonReportAction action = new WatsonExtraDataReportAction(text);

            ExWatson.RegisterReportAction(action, WatsonActionScope.Thread);
            try
            {
                ExWatson.HandleException(sender, eventArgs);
            }
            finally
            {
                ExWatson.UnregisterReportAction(action, WatsonActionScope.Thread);
            }
            ExTraceGlobals.GeneralTracer.TraceDebug(0L, "Done processing unhandled exception. Return to CLR.");
        }
Example #5
0
        internal void TransferToBus(IBus bus)
        {
            var rebusEvents = bus.Advanced.Events;

            if (MessageContextEstablished != null)
            {
                foreach (var listener in MessageContextEstablished.GetInvocationList().Cast <MessageContextEstablishedEventHandler>())
                {
                    rebusEvents.MessageContextEstablished += listener;
                }
            }

            if (MessageSent != null)
            {
                foreach (var listener in MessageSent.GetInvocationList().Cast <MessageSentEventHandler>())
                {
                    rebusEvents.MessageSent += listener;
                }
            }

            if (BeforeInternalSend != null)
            {
                foreach (var listener in BeforeInternalSend.GetInvocationList().Cast <BeforeInternalSendEventHandler>())
                {
                    rebusEvents.BeforeInternalSend += listener;
                }
            }

            if (BeforeMessage != null)
            {
                foreach (var listener in BeforeMessage.GetInvocationList().Cast <BeforeMessageEventHandler>())
                {
                    rebusEvents.BeforeMessage += listener;
                }
            }

            if (AfterMessage != null)
            {
                foreach (var listener in AfterMessage.GetInvocationList().Cast <AfterMessageEventHandler>())
                {
                    rebusEvents.AfterMessage += listener;
                }
            }

            if (BusStarted != null)
            {
                foreach (var listener in BusStarted.GetInvocationList().Cast <BusStartedEventHandler>())
                {
                    rebusEvents.BusStarted += listener;
                }
            }

            if (BusStopped != null)
            {
                foreach (var listener in BusStopped.GetInvocationList().Cast <BusStoppedEventHandler>())
                {
                    rebusEvents.BusStopped += listener;
                }
            }

            if (BeforeTransportMessage != null)
            {
                foreach (var listener in BeforeTransportMessage.GetInvocationList().Cast <BeforeTransportMessageEventHandler>())
                {
                    rebusEvents.BeforeTransportMessage += listener;
                }
            }

            if (AfterTransportMessage != null)
            {
                foreach (var listener in AfterTransportMessage.GetInvocationList().Cast <AfterTransportMessageEventHandler>())
                {
                    rebusEvents.AfterTransportMessage += listener;
                }
            }

            if (PoisonMessage != null)
            {
                foreach (var listener in PoisonMessage.GetInvocationList().Cast <PoisonMessageEventHandler>())
                {
                    rebusEvents.PoisonMessage += listener;
                }
            }

            if (UncorrelatedMessage != null)
            {
                foreach (var listener in UncorrelatedMessage.GetInvocationList().Cast <UncorrelatedMessageEventHandler>())
                {
                    rebusEvents.UncorrelatedMessage += listener;
                }
            }

            if (MessageAudited != null)
            {
                foreach (var listener in MessageAudited.GetInvocationList().Cast <MessageAuditedEventHandler>())
                {
                    rebusEvents.MessageAudited += listener;
                }
            }

            if (AfterHandling != null)
            {
                foreach (var listener in AfterHandling.GetInvocationList().Cast <AfterHandlingEventHandler>())
                {
                    rebusEvents.AfterHandling += listener;
                }
            }

            if (BeforeHandling != null)
            {
                foreach (var listener in BeforeHandling.GetInvocationList().Cast <BeforeHandlingEventHandler>())
                {
                    rebusEvents.BeforeHandling += listener;
                }
            }

            if (OnHandlingError != null)
            {
                foreach (var listener in OnHandlingError.GetInvocationList().Cast <OnHandlingErrorEventHandler>())
                {
                    rebusEvents.OnHandlingError += listener;
                }
            }

            foreach (var messageMutator in MessageMutators)
            {
                rebusEvents.MessageMutators.Add(messageMutator);
            }

            foreach (var unitOfWorkManager in unitOfWorkManagers)
            {
                rebusEvents.AddUnitOfWorkManager(unitOfWorkManager);
            }
        }