RTC Toolkit 5.1.0
Loading...
Searching...
No Matches
businessLogic.hpp
Go to the documentation of this file.
1
13#ifndef RTCTK_REUSABLECOMPONENT_MUDPIPUB_BUSINESSLOGIC_HPP
14#define RTCTK_REUSABLECOMPONENT_MUDPIPUB_BUSINESSLOGIC_HPP
15
22
24
25namespace rtctk::mudpiPub {
26
29
31
33public:
35
39
40 // for each topic we have a vector of samples, where a sample is a vector of bytes
41 using UserData = std::map<std::string, std::vector<std::vector<uint8_t>>>;
42 using UserFunc = std::function<UserData(const std::string&)>;
43
44 BusinessLogic(const std::string& name,
45 ServiceContainer& services,
46 UserFunc user_func = nullptr);
47 virtual ~BusinessLogic() = default;
48 void ActivityStarting(StopToken st) override;
49 void ActivityInitialising(StopToken st) override;
50 void ActivityRunning(StopToken st) override;
51 void ActivityUpdating(StopToken st, const JsonPayload& args) override;
52
53private:
57
58 log4cplus::Logger& m_logger;
59
60 AppCfg MakeAppCfg();
61
62 void UpdateAppDynamicCfg(AppCfg& cfg);
63
64 std::tuple<std::string, PubCfg> MakePubCfg(const std::string& prefix, const AppCfg& app_cfg);
65
66 void
67 UpdatePubDynamicCfg(const std::string& prefix, PubDynamicCfg& pub_cfg, const AppCfg& app_cfg);
68
69 std::string m_name;
70 RuntimeRepoIf& m_rtr;
71 ComponentMetricsIf& m_metrics;
72
73 perfc::CounterI64 m_pc_samples_published;
74 perfc::ScopedRegistration m_pc_samples_published_reg;
75 std::unique_ptr<rtctk::componentFramework::FrequencyEstimator<>> m_freq_estimator;
76 std::unique_ptr<rtctk::componentFramework::DurationMonitor<>> m_dur_monitor;
77
78 AppCfg m_cfg; // configuration
79 UserFunc m_user_func;
80 std::vector<std::unique_ptr<Publisher>> m_publishers;
81
82 std::atomic<bool> m_running = false;
83};
84
85} // namespace rtctk::mudpiPub
86
87#endif // RTCTK_REUSABLECOMPONENT_MUDPIPUB_BUSINESSLOGIC_HPP
Component metrics interface.
Definition componentMetricsIf.hpp:85
This class provides a wrapper for a data point path.
Definition dataPointPath.hpp:74
Base interface for all Runtime Configuration Repository adapters.
Definition runtimeRepoIf.hpp:27
Container class that holds services of any type.
Definition serviceContainer.hpp:39
Definition businessLogic.hpp:32
void ActivityUpdating(StopToken st, const JsonPayload &args) override
Definition businessLogic.cpp:129
std::map< std::string, std::vector< std::vector< uint8_t > > > UserData
Definition businessLogic.hpp:41
void ActivityInitialising(StopToken st) override
Definition businessLogic.cpp:40
void ActivityRunning(StopToken st) override
Definition businessLogic.cpp:95
BusinessLogic(const std::string &name, ServiceContainer &services, UserFunc user_func=nullptr)
Definition businessLogic.cpp:23
rtctk::componentFramework::JsonPayload JsonPayload
Definition businessLogic.hpp:36
rtctk::componentFramework::StopToken StopToken
Definition businessLogic.hpp:38
std::function< UserData(const std::string &)> UserFunc
Definition businessLogic.hpp:42
void ActivityStarting(StopToken st) override
Definition businessLogic.cpp:33
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:21
Runnable< RtcComponent > LifeCycle
Definition businessLogic.hpp:30
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.
Basic life cycle for RtcComponent.
Definition rtcComponent.hpp:74
Life cycle extension to make RtcComponent Runnable.
Definition runnable.hpp:31
Configuration of entire MUDPI Publisher application.
Definition config.hpp:80
Dynamic Configuration of a single MUDPI Publisher object.
Definition config.hpp:29