public void AddMessageHandler <T>(IHandler <T> handler) where T : Message { List <Func <Message, bool> > handlers; if (!_handlers.TryGetValue(typeof(T), out handlers)) { handlers = new List <Func <Message, bool> >(); _handlers.Add(typeof(T), handlers); } var guaranteedDelivery = new GuaranteedOnceDelivery <T>(handler); if (guaranteedDelivery.Enabled) { if (_messageLock == null) { throw new Exception("IMessageLock is null. You need to specify an implementation for IMessageLock."); } handler = new ExactlyOnceHandler <T>(handler, _messageLock, guaranteedDelivery.TimeOut); } var executionTimeMonitoring = _messagingMonitor as IMeasureHandlerExecutionTime; if (executionTimeMonitoring != null) { handler = new StopwatchHandler <T>(handler, executionTimeMonitoring); } handlers.Add(DelegateAdjuster.CastArgument <Message, T>(x => handler.Handle(x))); }
public void AddMessageHandler <T>(Func <IHandler <T> > futureHandler) where T : Message { List <Func <Message, bool> > handlers; if (!_handlers.TryGetValue(typeof(T), out handlers)) { handlers = new List <Func <Message, bool> >(); _handlers.Add(typeof(T), handlers); } var handlerInstance = futureHandler(); var guaranteedDelivery = new GuaranteedOnceDelivery <T>(handlerInstance); IHandler <T> handler = new FutureHandler <T>(futureHandler); if (guaranteedDelivery.Enabled) { if (_messageLock == null) { throw new Exception("IMessageLock is null. You need to specify an implementation for IMessageLock."); } handler = new ExactlyOnceHandler <T>(handler, _messageLock, guaranteedDelivery.TimeOut, handlerInstance.GetType().FullName.ToLower()); } var executionTimeMonitoring = _messagingMonitor as IMeasureHandlerExecutionTime; if (executionTimeMonitoring != null) { handler = new StopwatchHandler <T>(handler, executionTimeMonitoring); } Subscribers.Add(new Subscriber(typeof(T))); handlers.Add(message => handler.Handle((T)message)); }
public async Task WhenHandlerIsWrappedinStopWatch_MonitoringIsCalled() { var handler = MockHandler(); var monitoring = Substitute.For<IMeasureHandlerExecutionTime>(); var stopWatchHandler = new StopwatchHandler<OrderAccepted>(handler, monitoring); await stopWatchHandler.Handle(new OrderAccepted()); monitoring.Received(1). HandlerExecutionTime( Arg.Any<string>(), Arg.Any<string>(), Arg.Any<TimeSpan>()); }
public async Task WhenHandlerIsWrappedinStopWatch_InnerHandlerIsCalled() { var handler = MockHandler(); var monitoring = Substitute.For<IMeasureHandlerExecutionTime>(); var stopWatchHandler = new StopwatchHandler<OrderAccepted>(handler, monitoring); var result = await stopWatchHandler.Handle(new OrderAccepted()); Assert.That(result, Is.True); await handler.Received(1).Handle(Arg.Any<OrderAccepted>()); }
public async Task WhenHandlerIsWrappedinStopWatch_MonitoringIsCalled() { var handler = MockHandler(); var monitoring = Substitute.For <IMeasureHandlerExecutionTime>(); var stopWatchHandler = new StopwatchHandler <OrderAccepted>(handler, monitoring); await stopWatchHandler.Handle(new OrderAccepted()); monitoring.Received(1).HandlerExecutionTime( Arg.Any <Type>(), Arg.Any <Type>(), Arg.Any <TimeSpan>()); }
public async Task WhenHandlerIsWrappedinStopWatch_InnerHandlerIsCalled() { var handler = MockHandler(); var monitoring = Substitute.For <IMeasureHandlerExecutionTime>(); var stopWatchHandler = new StopwatchHandler <OrderAccepted>(handler, monitoring); var result = await stopWatchHandler.Handle(new OrderAccepted()); result.ShouldBeTrue(); await handler.Received(1).Handle(Arg.Any <OrderAccepted>()); }
public async Task WhenHandlerIsWrappedinStopWatch_MonitoringIsCalledWithCorrectTypeNames() { var handler = MockHandler(); var innnerHandlerName = handler.GetType().Name.ToLower(); var monitoring = Substitute.For<IMeasureHandlerExecutionTime>(); var stopWatchHandler = new StopwatchHandler<OrderAccepted>(handler, monitoring); await stopWatchHandler.Handle(new OrderAccepted()); monitoring.Received(1).HandlerExecutionTime( innnerHandlerName, "orderaccepted", Arg.Any<TimeSpan>()); }
public async Task WhenHandlerIsWrappedinStopWatch_MonitoringIsCalledWithCorrectTypes() { var handler = MockHandler(); var innnerHandlerName = handler.GetType().Name.ToLowerInvariant(); var monitoring = Substitute.For <IMeasureHandlerExecutionTime>(); var stopWatchHandler = new StopwatchHandler <OrderAccepted>(handler, monitoring); await stopWatchHandler.Handle(new OrderAccepted()); monitoring.Received(1).HandlerExecutionTime( handler.GetType(), typeof(OrderAccepted), Arg.Any <TimeSpan>()); }
public static Stopwatch OnUpdate(this Stopwatch watch, StopwatchHandler handler) { watch.Update += handler; return(watch); }
public static Timeout OnResumed(this Timeout watch, StopwatchHandler handler) { watch.Resumed += handler; return(watch); }
public static Stopwatch OnStopped(this Stopwatch watch, StopwatchHandler handler) { watch.Stopped += handler; return watch; }
public static Timeout OnUpdate(this Timeout watch, StopwatchHandler handler) { watch.Update += handler; return(watch); }
public static Timeout OnBegin(this Timeout watch, StopwatchHandler handler) { watch.Begin += handler; return(watch); }
public static Stopwatch OnResumed(this Stopwatch watch, StopwatchHandler handler) { watch.Resumed += handler; return(watch); }
public static Stopwatch OnUpdate(this Stopwatch watch, StopwatchHandler handler) { watch.Update += handler; return watch; }
public static Stopwatch OnPaused(this Stopwatch watch, StopwatchHandler handler) { watch.Paused += handler; return(watch); }
public static Stopwatch OnResumed(this Stopwatch watch, StopwatchHandler handler) { watch.Resumed += handler; return watch; }
public static Timeout OnUpdate(this Timeout watch, StopwatchHandler handler) { watch.Update += handler; return watch; }
public static Timeout OnResumed(this Timeout watch, StopwatchHandler handler) { watch.Resumed += handler; return watch; }
public static Timeout OnBegin(this Timeout watch, StopwatchHandler handler) { watch.Begin += handler; return watch; }
public static Stopwatch OnBegin(this Stopwatch watch, StopwatchHandler handler) { watch.Begin += handler; return(watch); }
public static Stopwatch OnBegin(this Stopwatch watch, StopwatchHandler handler) { watch.Begin += handler; return watch; }