public void Handle(EdgeHubDataPointReceived @event)
        {
            try
            {
                _logger.Information("Received event: {EdgeHubEvent}", JsonConvert.SerializeObject(@event));
                (EdgeHubDataPointRemapped remapped, EdgeHubDataPointWithSource mappedWithSource) = RemapDataPoint(@event);
                _logger.Information("Remapped: {EdgeHubEvent}", JsonConvert.SerializeObject(remapped));

                SendEvent(remapped);
                SendEventWithSource(mappedWithSource);
            }
            catch (Exception e)
            {
                if (e is MissingTagInSourceException || e is MissingSourceException)
                {
                    var eventWithSource = new EdgeHubDataPointWithSource
                    {
                        Source    = @event.Source,
                        Tag       = @event.Tag,
                        Value     = @event.Value,
                        Timestamp = @event.Timestamp,
                        MetaData  = @event.MetaData,
                    };

                    SendEventWithSource(eventWithSource);
                }
            }
        }
        private (EdgeHubDataPointRemapped, EdgeHubDataPointWithSource) RemapDataPoint(EdgeHubDataPointReceived incoming)
        {
            var timeseries = _mapper.GetTimeSeriesFor(incoming.Source, incoming.Tag);

            var mappedEvent = new EdgeHubDataPointRemapped
            {
                TimeSeries = timeseries,
                Value      = incoming.Value,
                Timestamp  = incoming.Timestamp,
            };

            var eventWithSource = new EdgeHubDataPointWithSource
            {
                Source     = incoming.Source,
                Tag        = incoming.Tag,
                TimeSeries = timeseries,
                Value      = incoming.Value,
                Timestamp  = incoming.Timestamp,
                MetaData   = incoming.MetaData,
            };

            return(mappedEvent, eventWithSource);
        }