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); }); }
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))); }); }