ifw-ccf 4.0.0
Loading...
Searching...
No Matches
pubThread.hpp
Go to the documentation of this file.
1
5#ifndef CCF_CONTROL_PUB_THREAD_HPP_H_
6#define CCF_CONTROL_PUB_THREAD_HPP_H_
7
8#include "ccf/common/base.hpp"
12
13namespace ccf::control {
14
16 class PubThread: public ccf::mptk::Thread, public ccf::Base {
17 public:
18
20 static void SetStatusAll(const ccf::PubStatus status);
21
24 PubThread(const std::string& thread_name,
25 ccf::mptk::MessageBus& message_bus,
26 const double period = 0.1);
27
28 virtual ~PubThread();
29
31 void Initialise();
32
34 virtual void UserLogic();
35
37 void SetProcThrOutputQ(std::shared_ptr<ccf::common::FrameQueue>& queue);
38
41
43 void SetStatus(const ccf::PubStatus status);
44
47
51
54 uint8_t NbOfPublishers() const;
55
57 const ccf::common::PubBase& GetPublisher(const uint16_t nb) const;
58
61
63 const std::list<ccf::common::PubBase*>& GetPublishers() const;
64
66 void SetParentProcThreadName(const std::string& parent_proc_thread_name);
67
69 const std::string& GetParentProcThreadName() const;
70
73
74 protected:
75
76 private:
77 bool CheckMessageBus(bool& new_data_available,
78 bool& new_setup);
79 void GetFrameHandleRef();
80 void InvokePublishers();
81 void ReleaseFrameHandle();
82 void HandleNewSetup(ccf::Status& status,
83 std::string& diagnostics);
84
85 std::string m_parent_proc_thr_name;
86
87 ccf::mptk::Message m_cur_msg; // Current thread message being handled.
88
89 // Current data frame being handled. Should not be shared_ptr.
90 ccf::common::DataFrame* m_cur_frame;
91
92 // Used to avoid updating OLDB/PubSub unnecessary.
93 ccf::PubStatus m_pub_thread_status;
94
95 // TODO: Consider to allow only one publisher:
96 // std::shared_ptr<ccf::common::PubBase> m_publisher;
97 std::list<ccf::common::PubBase*> m_publishers;
98
99 ProcThread* m_parent_proc_thr;
100
101 // Map to find Data Publisher objects easily by means of the Thread ID.
102 std::map<std::string, ccf::common::PubBase*> m_publisher_map;
103
104 // Note: The queues are allocated and deleted by the ccf::control::application class.
105 std::shared_ptr<ccf::common::FrameQueue> m_proc_thr_output_q;
106
107 ccf::common::FrameStatistics m_frame_stat;
108 };
109
110}
111
112#endif // CCF_CONTROL_PUB_THREAD_HPP_H_
Class to be used as parent all CCF classes.
Definition: base.hpp:107
Frame class used to store the data and metadata for one frames received from the camera.
Definition: dataFrame.hpp:17
The FrameQueue class implements a queue, to manage a set of CCF DataFrame instances as a ring buffer.
Definition: frameQueue.hpp:14
Class used by the threads to store info for generating performance statistics.
Definition: utilities.hpp:25
Class for implementing CCF Data Publishers.
Definition: pubBase.hpp:114
Processing Thread MPTK Thread implementation (see also ccf::mptk::Thread).
Definition: procThread.hpp:16
Publisher Thread MPTK Thread implementation (see also ccf::mptk::Thread).
Definition: pubThread.hpp:16
void SetParentProcThreadName(const std::string &parent_proc_thread_name)
Set the name of the parent Processing Thread in the object.
Definition: pubThread.cpp:312
const std::string & GetParentProcThreadName() const
Return the name of the parent Processing Thread from the object.
Definition: pubThread.cpp:317
void AddPublisher(ccf::common::PubBase &pub_obj)
Definition: pubThread.cpp:272
ccf::common::FrameStatistics & GetFrameStat()
Get reference to frame handling statistics.
Definition: pubThread.cpp:326
static void SetStatusAll(const ccf::PubStatus status)
Set the Publishing Status of all Publisher Threads running.
Definition: pubThread.cpp:12
ccf::common::FrameQueue & GetProcThrOutputQ()
Get reference to the Output Queue of this Processing Thread.
Definition: pubThread.cpp:126
void SetProcThrOutputQ(std::shared_ptr< ccf::common::FrameQueue > &queue)
Set reference to the Output Queue of this Processing Thread.
Definition: pubThread.cpp:121
void Initialise()
Initialise this thread (object).
Definition: pubThread.cpp:57
virtual ~PubThread()
Definition: pubThread.cpp:41
ccf::PubStatus GetStatus() const
Return Publishing Status of this Publisher Thread.
Definition: pubThread.cpp:267
ccf::common::PubBase & GetPublisher()
Get the reference to the internal publisher object.
Definition: pubThread.cpp:302
void SetStatus(const ccf::PubStatus status)
Set the Publishing Status of this Publisher Thread.
Definition: pubThread.cpp:134
virtual void UserLogic()
Use logic invoked periodically (ccf::mptk::Thread).
Definition: pubThread.cpp:72
uint8_t NbOfPublishers() const
Definition: pubThread.cpp:286
const std::list< ccf::common::PubBase * > & GetPublishers() const
Get the list of internal Data Publisher (objects).
Definition: pubThread.cpp:307
IFW CTD Multiprocessing Toolkit Message Bus.
Definition: messageBus.hpp:91
IFW CTD Multiprocessing Toolkit Message class.
Definition: message.hpp:24
IFW CTD Multiprocessing Toolkit Thread base class.
Definition: thread.hpp:29
Definition: acqThread.cpp:10
PubStatus
Defines the various possible states of a Data Publisher.
Definition: base.hpp:213
Status
General status variable.
Definition: base.hpp:143