RTC Toolkit 5.1.0
Loading...
Searching...
No Matches
correlator.hpp
Go to the documentation of this file.
1
12#ifndef RTCTK_TELSUB_CORRELATOR_HPP
13#define RTCTK_TELSUB_CORRELATOR_HPP
14
15#include <memory>
19
20namespace rtctk::telSub {
21
32public:
33 using Alloc = std::pmr::polymorphic_allocator<std::byte>;
34
38 explicit Correlator(const CorrelatorParams& params,
39 std::unique_ptr<DdsWaitSetIf> dds_subscriber,
41 const Alloc& alloc = {});
42
50 std::optional<CorrelationError> Poll(std::chrono::milliseconds timeout,
51 const DataSamplesView*& samples) RTCTK_NOEXCEPT override;
52
53 std::optional<std::uint32_t> GetLastSampleId() const RTCTK_NOEXCEPT override {
54 return m_last_correlated_sample;
55 }
57
59
61 using ClockType = std::chrono::steady_clock;
62 using TimePoint = ClockType::time_point;
63
67 std::optional<CorrelationError> TakeUntil(TimePoint until) noexcept;
68
74 CorrelateFirst(TimePoint until, const DataSamplesView*& samples) noexcept;
75
87 CorrelateSubsequent(TimePoint until, const DataSamplesView*& samples) noexcept;
88
92 void Truncate(AgnosticDataSamples& samples) noexcept;
93
94 log4cplus::Logger& m_logger;
95 CorrelatorParams m_params;
96 std::unique_ptr<DdsWaitSetIf> m_dds_subscriber;
97 componentFramework::ComponentMetricsIf& m_metrics;
98 AgnosticDataSamples& m_samples;
99 std::optional<std::uint32_t> m_last_correlated_sample;
100 TimePoint m_poll_until_time;
101 DataSamplesView m_view;
102 std::pmr::map<std::string, size_t> m_indices;
103};
104
105} // namespace rtctk::telSub
106
107#endif // RTCTK_TELSUB_CORRELATOR_HPP
Component metrics interface.
Definition componentMetricsIf.hpp:85
Container of DDS samples and associated sample information.
Definition agnosticDataSamples.hpp:77
Interface for correlator implemementations that takes new data samples from DDS and performs correlat...
Definition correlatorIf.hpp:60
Implements a correlator.
Definition correlator.hpp:31
void Reset() RTCTK_NOEXCEPT override
Resets internal state.
Definition correlator.cpp:145
std::optional< std::uint32_t > GetLastSampleId() const RTCTK_NOEXCEPT override
Definition correlator.hpp:53
std::pmr::polymorphic_allocator< std::byte > Alloc
Definition correlator.hpp:33
std::optional< CorrelationError > Poll(std::chrono::milliseconds timeout, const DataSamplesView *&samples) RTCTK_NOEXCEPT override
The strategy is to correlate on existing data, if possible before taking more samples.
Definition correlator.cpp:154
Correlator(const CorrelatorParams &params, std::unique_ptr< DdsWaitSetIf > dds_subscriber, componentFramework::ComponentMetricsIf &metrics, const Alloc &alloc={})
Definition correlator.cpp:130
void CheckDdsConnections() override
Definition correlator.cpp:274
Base class abstracting DDS communication code.
Definition ddsWaitSetIf.hpp:93
#define RTCTK_NOEXCEPT
Definition config.hpp:63
Header file for ComponentMetricsIf.
Declares CorrelatorIf.
Declares DdsWaitSetIf.
elt::mal::future< std::string > InjectReqRepEvent(StateMachineEngine &engine)
Definition malEventInjector.hpp:23
Definition main.cpp:24
std::variant< CorrelationFailedError, DdsWaitSetError > CorrelationError
Definition correlatorIf.hpp:37
Placeholder for correlator parameters.
Definition correlatorIf.hpp:45
A set of correlated agnostic non-owning data samples references.
Definition dataSampleView.hpp:52