13#ifndef RTCTK_REUSABLECOMPONENT_MUDPIPUB_BUSINESSLOGIC_HPP
14#define RTCTK_REUSABLECOMPONENT_MUDPIPUB_BUSINESSLOGIC_HPP
25#include <taiclock/taiClock.hpp>
31using rtctk::componentFramework::RtcComponent;
32using rtctk::componentFramework::Runnable;
45 using UserData = std::map<std::string, std::vector<std::vector<uint8_t>>>;
62 log4cplus::Logger& m_logger;
66 void UpdateAppDynamicCfg(
AppCfg& cfg);
68 void UpdateCachedPublicationStartTime();
69 taiclock::TaiClock::time_point ResolvePublicationStartTime()
const;
71 void WaitUntilPublicationDeadline(taiclock::TaiClock::time_point deadline,
74 std::tuple<std::string, PubCfg> MakePubCfg(
const std::string& prefix,
const AppCfg& app_cfg);
77 UpdatePubDynamicCfg(
const std::string& prefix,
PubDynamicCfg& pub_cfg,
const AppCfg& app_cfg);
81 ComponentMetricsIf& m_metrics;
83 perfc::CounterI64 m_pc_samples_published;
84 perfc::ScopedRegistration m_pc_samples_published_reg;
85 std::unique_ptr<rtctk::componentFramework::FrequencyEstimator<>> m_freq_estimator;
86 std::unique_ptr<rtctk::componentFramework::DurationMonitor<>> m_dur_monitor;
90 std::vector<std::unique_ptr<Publisher>> m_publishers;
92 std::atomic<bool> m_running =
false;
94 std::optional<taiclock::TaiClock::time_point> m_publication_start_time;
95 std::string m_publication_start_timestamp;
Component metrics interface.
Definition componentMetricsIf.hpp:164
This class provides a wrapper for a data point path.
Definition dataPointPath.hpp:77
Definition runnable.hpp:35
Base interface for all Runtime Configuration Repository adapters.
Definition runtimeRepoIf.hpp:27
Container class that holds services of any type.
Definition serviceContainer.hpp:39
void ActivityUpdating(StopToken st, const JsonPayload &args) override
Definition businessLogic.cpp:161
std::map< std::string, std::vector< std::vector< uint8_t > > > UserData
Definition businessLogic.hpp:45
void ActivityInitialising(StopToken st) override
Definition businessLogic.cpp:43
void ActivityRunning(StopToken st) override
Definition businessLogic.cpp:122
BusinessLogic(const std::string &name, ServiceContainer &services, UserFunc user_func=nullptr)
Definition businessLogic.cpp:26
LifeCycle ComponentType
Definition businessLogic.hpp:38
rtctk::componentFramework::ServiceContainer ServiceContainer
Definition businessLogic.hpp:41
rtctk::componentFramework::JsonPayload JsonPayload
Definition businessLogic.hpp:40
rtctk::componentFramework::StopToken StopToken
Definition businessLogic.hpp:42
std::function< UserData(const std::string &)> UserFunc
Definition businessLogic.hpp:46
void ActivityStarting(StopToken st) override
Definition businessLogic.cpp:36
virtual ~BusinessLogic()=default
Header file for ComponentMetricsIf.
Header file for Duration Monitor.
Header file for Frequency Estimator.
rad::StopToken StopToken
Definition stopToken.hpp:20
nlohmann::json JsonPayload
Type requirements:
Definition jsonPayload.hpp:25
Definition businessLogic.cpp:24
Runnable< RtcComponent > LifeCycle
Definition businessLogic.hpp:34
RTC toolkit MUDPI publisher class declaration.
Lifecycle of a basic 'RtcComponent'.
Lifecycle Extension that makes an RTC Component 'Runnable'.
Header file for RuntimeRepoIf, which defines the API for RuntimeRepoAdapters.
Life cycle extension to make RtcComponent Runnable.
Definition runnable.hpp:31
Configuration of entire MUDPI Publisher application.
Definition config.hpp:84
Dynamic Configuration of a single MUDPI Publisher object.
Definition config.hpp:29