RTC Toolkit 6.0.0
Loading...
Searching...
No Matches
publisher.hpp
Go to the documentation of this file.
1
11
12#ifndef RTCTK_REUSABLECOMPONENT_MUDPIPUB_PUBLISHER_HPP
13#define RTCTK_REUSABLECOMPONENT_MUDPIPUB_PUBLISHER_HPP
14
15#include <semaphore>
16#include <string>
17#include <thread>
18#include <vector>
19
22
23namespace rtctk::mudpiPub {
24
25// forward declaration to hide internally used class
26class SampleGenerator;
27
34class Publisher {
35public:
41 using UserSamples = std::vector<std::vector<uint8_t>>;
42
52 Publisher(const std::string& pub_id, const PubCfg& cfg, UserSamples data = {});
53
57 virtual ~Publisher();
58
62 void SendSample();
63
68
72 void Init();
73
82 void UpdateDynamicConfig(const PubDynamicCfg& cfg, UserSamples user_samples = {});
83
87 const std::string& GetId() const {
88 return m_id;
89 }
90
91private:
92 void Run(std::stop_token st);
93
94 log4cplus::Logger& m_logger;
95
96 std::string m_id;
97
98 PubStaticCfg m_cfg;
99
100 std::binary_semaphore m_sem_start;
101 std::binary_semaphore m_sem_done;
102
103 std::mutex m_generator_mutex;
104 std::unique_ptr<SampleGenerator> m_generator;
105
106 std::jthread m_thread;
107};
108
109} // namespace rtctk::mudpiPub
110
111#endif // RTCTK_REUSABLECOMPONENT_MUDPIPUB_PUBLISHER_HPP
void WaitUntilSendingDone()
Blocks until the sample has been sent.
Definition publisher.cpp:222
Publisher(const std::string &pub_id, const PubCfg &cfg, UserSamples data={})
Constructs a new publisher object.
Definition publisher.cpp:174
void SendSample()
Signals the worker thread to send a sample.
Definition publisher.cpp:218
virtual ~Publisher()
Destroys publisher object.
const std::string & GetId() const
Returns the name of the publisher object.
Definition publisher.hpp:87
void Init()
Resets the sample_id to zero.
Definition publisher.cpp:213
std::vector< std::vector< uint8_t > > UserSamples
Type alias for provided user data.
Definition publisher.hpp:41
void UpdateDynamicConfig(const PubDynamicCfg &cfg, UserSamples user_samples={})
Updates dynamic configuration.
Definition publisher.cpp:208
Definition publisher.cpp:45
Logging Support Library based on log4cplus.
Definition businessLogic.cpp:23
RTC toolkit MUDPI publisher configuration class declaration.
Configuration (Dynamic + Static) of a single MUDPI Publisher object.
Definition config.hpp:78
Dynamic Configuration of a single MUDPI Publisher object.
Definition config.hpp:28
Static Configuration of a single MUDPI Publisher object.
Definition config.hpp:42