RTC Toolkit 5.1.0
Loading...
Searching...
No Matches
dynamicDataPointRecordingUnit.hpp
Go to the documentation of this file.
1
12#ifndef RTCTK_COMPONENTFRAMEWORK_DYNAMICDATAPOINTRECORDINGUNIT_HPP
13#define RTCTK_COMPONENTFRAMEWORK_DYNAMICDATAPOINTRECORDINGUNIT_HPP
14
15#include <atomic>
16#include <boost/signals2/connection.hpp>
17#include <functional>
18#include <mutex>
19#include <typeindex>
20#include <vector>
21
25
30void* FitsDataRecorderFactory(std::type_index);
31
39public:
48 const std::string& comp_id,
49 const std::string& unit_id,
50 ServiceContainer& services,
51 std::function<void*(std::type_index)> recorder_factory = &FitsDataRecorderFactory);
52
53 void Prepare(const std::filesystem::path& file_path) override;
54
55 void Start() override;
56
57 std::vector<std::filesystem::path> Stop() override;
58
59 void Update() override;
60
61 void CheckErrors() override;
62
63 using DataRecorderFactory = std::function<void*(std::type_index)>;
64
66
67private:
68 std::vector<std::unique_ptr<RecordingUnit>> m_recording_units;
69 std::vector<boost::signals2::scoped_connection> m_recording_unit_connections;
70
71 ServiceContainer& m_services;
72
73 inline static constexpr std::string_view RTR_PATH_DATA_POINT_LIST =
74 "/{}/dynamic/rec_units/{}/datapoint_list";
75
76 std::function<void*(std::type_index)> m_recorder_factory;
77
81 void StateTransitionHandler(const std::string& unit_id, const State& state);
82
86 std::map<std::string, State> m_state_map{};
87 std::mutex m_state_map_mutex{};
88
89 // state counters for the sub recording units units
90 std::atomic_size_t m_unit_count{0};
91 std::atomic_size_t m_units_idle{0};
92 std::atomic_size_t m_units_finished{0};
93};
94
95} // namespace rtctk::componentFramework
96
97#endif // RTCTK_COMPONENTFRAMEWORK_DYNAMICDATAPOINTRECORDINGUNIT_HPP
Recording unit that takes datapoints from RuntimeRepo path "/component_id/dynamic/rec_units/unit_id/d...
Definition dynamicDataPointRecordingUnit.hpp:38
std::vector< std::filesystem::path > Stop() override
Stop the recording and wait for it's termination.
Definition dynamicDataPointRecordingUnit.cpp:278
std::function< void *(std::type_index)> DataRecorderFactory
Definition dynamicDataPointRecordingUnit.hpp:63
void CheckErrors() override
Check for Errors, will rethrow errors thrown in the recorder.
Definition dynamicDataPointRecordingUnit.cpp:296
void Update() override
Update dynamic settings.
Definition dynamicDataPointRecordingUnit.cpp:290
void Prepare(const std::filesystem::path &file_path) override
Prepare the recording.
Definition dynamicDataPointRecordingUnit.cpp:206
DynamicDataPointRecordingUnit(const std::string &comp_id, const std::string &unit_id, ServiceContainer &services, std::function< void *(std::type_index)> recorder_factory=&FitsDataRecorderFactory)
Definition dynamicDataPointRecordingUnit.cpp:196
virtual ~DynamicDataPointRecordingUnit()
Definition dynamicDataPointRecordingUnit.cpp:339
void Start() override
Start the recording.
Definition dynamicDataPointRecordingUnit.cpp:269
Abstract base class for all sources that can be recorded by the MetadataCollector and TelemetryRecord...
Definition recordingUnit.hpp:51
State
Definition recordingUnit.hpp:53
Container class that holds services of any type.
Definition serviceContainer.hpp:39
Definition commandReplier.cpp:22
void * FitsDataRecorderFactory(std::type_index type)
A Recorder factory for the DynamicDataPointRecordingUnit that creates FitsRecorders.
Definition dynamicDataPointRecordingUnit.cpp:188
elt::mal::future< std::string > InjectReqRepEvent(StateMachineEngine &engine)
Definition malEventInjector.hpp:23
Abstract base class defining functionality common to all recording units.
A container that can hold any type of service.