public static void EnableDiagnosticSources(this OptionsConfigurer configurer)
        {
            if (configurer == null)
            {
                throw new ArgumentNullException(nameof(configurer));
            }

            configurer.Decorate <IPipeline>(c =>
            {
                var pipeline = c.Get <IPipeline>();
                var injector = new PipelineStepInjector(pipeline);

                var outgoingStep = new OutgoingDiagnosticsStep();
                injector.OnSend(outgoingStep, PipelineRelativePosition.Before,
                                typeof(SendOutgoingMessageStep));

                var incomingStep = new IncomingDiagnosticsStep();

                var invokerWrapper = new IncomingDiagnosticsHandlerInvokerWrapper();
                injector.OnReceive(invokerWrapper, PipelineRelativePosition.After, typeof(ActivateHandlersStep));

                var concatenator = new PipelineStepConcatenator(injector);
                concatenator.OnReceive(incomingStep, PipelineAbsolutePosition.Front);

                return(concatenator);
            });
        }
Ejemplo n.º 2
0
        public static void EnableOpenTelemetry(this OptionsConfigurer configurer)
        {
            configurer.Decorate <IPipeline>(c =>
            {
                var pipeline = c.Get <IPipeline>();
                var step     = new OutgoingDiagnosticsStep();
                return(new PipelineStepInjector(pipeline).OnSend(step, PipelineRelativePosition.Before,
                                                                 typeof(SerializeOutgoingMessageStep)));
            });

            configurer.Decorate <IPipeline>(c =>
            {
                var pipeline = c.Get <IPipeline>();
                var step     = new IncomingDiagnosticsStep();
                return(new PipelineStepInjector(pipeline).OnReceive(step, PipelineRelativePosition.Before,
                                                                    typeof(DeserializeIncomingMessageStep)));
            });
        }