private void OnIntervalElapsed(object state)
        {
            var distance = _measureSensor.GetDistance();

            _logger.LogInformation($"Measured distance. {distance}cm");

            var @event = new DistanceMeasured(distance);

            Task.Run(async() => await _mediator.Publish(@event));

            _logger.LogDebug($"Published {@event} event.");
        }
Пример #2
0
        public async Task Handle_DistanceMeasured_requests_a_played_sound_effect_being_stopped()
        {
            // Arrange
            A.CallTo(() => _distanceToSoundEffectConverter.DistanceToSoundEffect(A <double> ._))
            .Returns(null);
            var distanceMeasured = new DistanceMeasured(_distance);

            // Act
            await _sut.Handle(distanceMeasured, _defaultCancellationToken);

            // Assert
            A.CallTo(() => _mediator.Send(A <StopPlayingSoundEffect> ._, A <CancellationToken> ._))
            .MustHaveHappenedOnceExactly();
        }
Пример #3
0
        public async Task Handle(DistanceMeasured distanceMeasured, CancellationToken cancellationToken)
        {
            _logger.LogDebug($"Received {distanceMeasured} event.");

            var soundEffect = _distanceToSoundEffectConverter.DistanceToSoundEffect(distanceMeasured.Distance);

            IRequest command;

            if (soundEffect == null)
            {
                command = new StopPlayingSoundEffect();
            }
            else
            {
                command = new StartPlayingSoundEffect(soundEffect.Frequency);
            }

            await _mediator.Send(command);

            _logger.LogDebug($"Sent {command} command.");
        }