adtf_file_library  0.13.2
demultiplexer.h
Go to the documentation of this file.
1 
17 #pragma once
18 
19 #include <string>
20 #include <functional>
21 #include <map>
22 
23 #include <adtf_file/reader.h>
24 #include "processor.h"
25 
27 
33 namespace adtfdat_processing
34 {
35 
41 {
42 public:
49  Demultiplexer(std::shared_ptr<adtf_file::Reader> reader, const ProcessorFactories& processor_factories);
50 
58  void addProcessor(const std::string& stream_name,
59  const std::string& processor_id,
60  const std::string& destination_url,
61  const adtf_file::Configuration& configuration);
62 
71  void addProcessor(const std::string& stream_name,
72  const std::string& substream_name,
73  const std::string& processor_id,
74  const std::string& destination_url,
75  const adtf_file::Configuration& configuration);
76 
83  void process(const std::function<bool(double)>& progress_handler = {});
84 
85 private:
86  std::shared_ptr<adtf_file::Reader> _reader;
87  ProcessorFactories _processor_factories;
88 
89  using SubstreamsInType = std::unordered_map<std::string, adtf_file::adtf3::SubstreamProperties>;
90 
91  struct SubstreamProcessor
92  {
93  std::string processor_id;
94  adtf_file::Configuration processor_configuration;
95  std::string destination_url;
96  std::shared_ptr<Processor> processor;
97 
98  void open_or_change(const ProcessorFactories& processor_factories, const std::string& stream_name, const adtf_file::FileItem& item);
99  private:
100  void open(const ProcessorFactories& processor_factories, const adtf_file::Stream& stream);
101  };
102 
103  std::unordered_map<uint16_t, std::unordered_map<std::string, SubstreamProcessor>> _processors;
104 
105  struct InputStream
106  {
107  std::string name;
108  bool use_substream_id;
109  std::shared_ptr<const adtf_file::StreamType> initial_type;
110  std::unordered_map<uint32_t, std::shared_ptr<Processor>> processors;
111  };
112  std::unordered_map<uint16_t, InputStream> _input_streams;
113 
114  void remapProcessors(InputStream& input_stream, const adtf_file::FileItem& item);
115 };
116 }
class to create or read a file item. This file item is either a sample, streamtype or trigger.
Definition: reader.h:156
class to create and describe a stream within a adtf_file::Reader. Each stream has an identifier strea...
Definition: reader.h:134
Definition: demultiplexer.h:41
void process(const std::function< bool(double)> &progress_handler={})
void addProcessor(const std::string &stream_name, const std::string &substream_name, const std::string &processor_id, const std::string &destination_url, const adtf_file::Configuration &configuration)
Demultiplexer(std::shared_ptr< adtf_file::Reader > reader, const ProcessorFactories &processor_factories)
void addProcessor(const std::string &stream_name, const std::string &processor_id, const std::string &destination_url, const adtf_file::Configuration &configuration)
Definition: processor.h:128
std::unordered_map< std::string, PropertyValue > Configuration
Configuration class as set of key - property value pairs This configuration is used to adjust the rea...
Definition: configuration.h:143
namespace for ADTF DAT Processing library.
Definition: ddl_helpers.h:38

Copyright © CARIAD SE.
Generated on Mon Jun 10 2024 by doxygen 1.9.1
GIT Commit Hash: eb3af397a6b49ad6fcad9a60d8277d909b458b48