protected AlignmentCoordinator.SampleWindow GetSampleWindow(ArrayMapping arrayMapping, out MeasurementKey[] keys) { IEnumerable <FieldMapping> signalMappings = MappingCompiler.TraverseSignalMappings(arrayMapping); keys = signalMappings.SelectMany(mapping => SignalLookup.GetMeasurementKeys(mapping.Expression)).ToArray(); return(CreateSampleWindow(arrayMapping)); }
private void BuildTimeWindowKeys(TypeMapping inputMapping) { foreach (FieldMapping fieldMapping in inputMapping.FieldMappings) { ArrayMapping arrayMapping = fieldMapping as ArrayMapping; DataType fieldType = fieldMapping.Field.Type; DataType underlyingType = (fieldType as ArrayType)?.UnderlyingType; Action addTimeWindowKeys = () => { IEnumerable <FieldMapping> signalMappings = MappingCompiler.TraverseSignalMappings(arrayMapping); MeasurementKey[] keys = signalMappings.SelectMany(mapping => SignalLookup.GetMeasurementKeys(mapping.Expression)).ToArray(); m_timeWindowKeys.Add(keys); }; // ReSharper disable once PossibleNullReferenceException if (fieldType.IsArray && underlyingType.IsUserDefined && (arrayMapping.WindowSize != 0.0M || arrayMapping.RelativeTime != 0.0M)) { addTimeWindowKeys(); } else if (fieldType.IsArray && underlyingType.IsUserDefined) { m_mappingCompiler.EnumerateTypeMappings(fieldMapping.Expression).ToList().ForEach(BuildTimeWindowKeys); } else if (fieldType.IsUserDefined) { BuildTimeWindowKeys(m_mappingCompiler.GetTypeMapping(fieldMapping.Expression)); } } }
protected Ticks GetRelativeFrameTime(FieldMapping fieldMapping) { IEnumerable <FieldMapping> signalMappings = m_mappingCompiler.TraverseSignalMappings(fieldMapping); MeasurementKey[] keys = signalMappings.SelectMany(mapping => SignalLookup.GetMeasurementKeys(mapping.Expression)).ToArray(); AlignmentCoordinator.SampleWindow sampleWindow = CreateSampleWindow(fieldMapping); return(sampleWindow.GetTimestamps(CurrentFrameTime).FirstOrDefault()); }
protected IDictionary <MeasurementKey, IMeasurement> GetRelativeFrame(FieldMapping fieldMapping) { IEnumerable <FieldMapping> signalMappings = MappingCompiler.TraverseSignalMappings(fieldMapping); MeasurementKey[] keys = signalMappings.SelectMany(mapping => SignalLookup.GetMeasurementKeys(mapping.Expression)).ToArray(); AlignmentCoordinator.SampleWindow sampleWindow = CreateSampleWindow(fieldMapping); return(AlignmentCoordinator.GetFrame(keys, CurrentFrameTime, sampleWindow)); }