Go to the documentation of this file.
5 #ifndef CCF_COMMON_PUB_BASE_HPP_H_
6 #define CCF_COMMON_PUB_BASE_HPP_H_
39 const std::string obj_id =
"ccf::common::PublisherStatus");
104 std::string m_obj_id;
105 std::string m_pub_id;
108 int64_t m_frames_handled;
109 int64_t m_volume_handled;
110 std::map<std::string, std::string> m_files_stored;
118 static const std::string&
GenId(
const std::string& proc_thread_name,
119 const std::string& pub_thread_name);
122 template <
class TYPE>
124 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
126 if (pub_factory_obj.GetClassName() ==
"") {
127 CCFTHROW(
"Must define a classname for a Data Publisher Plug-In");
130 BEGIN_CRIT_SEC(
"ccf::common::PubBase") {
131 if (s_pub_factory_objects.find(pub_factory_obj.GetClassName()) !=
132 s_pub_factory_objects.end()) {
133 CCFTHROW(fmt::format(
"Factory object with classname: {} already exists",
134 pub_factory_obj.GetClassName()));
136 CCFINFO(
Logger(),
"Registering Data Pub factory object. Classname: " <<
137 pub_factory_obj.GetClassName());
138 s_pub_factory_objects[pub_factory_obj.GetClassName()] = std::make_shared<TYPE>();
144 static const std::map<std::string, std::shared_ptr<PubBase>>&
GetPubFactoryObjs();
155 const std::string& proc_thread_name,
156 const std::string& pub_thread_name,
166 static void GetPubObj(
const std::string& proc_thread_name,
167 const std::string& pub_thread_name,
169 const bool initialise =
true);
173 static void GetPubObjs(std::vector<PubBase*>& pub_objs);
179 static bool HasPubObj(
const std::string& proc_thread_name,
180 const std::string& pub_thread_name,
183 PubBase(
const std::string& proc_thread_name,
184 const std::string& pub_thread_name);
197 const std::string&
GetPubId()
const;
220 int64_t& nb_of_frames);
236 const std::string& pub_thread_name,
241 int64_t& nb_of_frames);
264 static std::map<std::string, std::shared_ptr<PubBase>> s_pub_factory_objects;
266 static std::map<std::string, PubBase*> s_pub_objects;
268 std::string m_pub_id;
269 std::string m_proc_thread_name;
270 std::string m_pub_thread_name;
272 std::string m_db_path;
274 std::shared_ptr<PublisherStatus> m_pub_status;
279 #endif // CCF_COMMON_PUB_BASE_HPP_H_
Class to be used as parent all CCF classes.
Definition: base.hpp:152
virtual void CreateObjectUser(const std::string &proc_thread_name, const std::string &pub_thread_name, PubBase **new_object)
Definition: pubBase.cpp:582
const std::string DB_NODE_PUB_VOLUME_HANDLED
Definition: pubBase.hpp:26
bool GetInitialised() const
Definition: pubBase.cpp:497
virtual void CheckForDeactivationUser()
Definition: pubBase.cpp:572
#define CCFTHROW(msg)
Definition: base.hpp:568
PublisherStatus & GetPubStatus()
Definition: pubBase.cpp:445
void SetVolumeHandled(const int64_t volume_handled)
Set the volume (in bytes) handled.
Definition: pubBase.cpp:155
virtual void InitialiseUser()
Definition: pubBase.cpp:502
#define CCFINFO(logger, msg)
INFO log macro. Includes the location ("CCFLOC") in the log message.
Definition: base.hpp:552
virtual ~PublisherStatus()
Definition: pubBase.cpp:61
void EstimateExecution(double &duration, int64_t &nb_of_frames)
Definition: pubBase.cpp:669
virtual void ActivateUser()
Definition: pubBase.cpp:607
PubType
A Publisher may be Recording or Not-Recording. A Recording Publisher publishes data into files.
Definition: base.hpp:278
const std::string & GetPubId() const
Return the ID of the Publisher Status object.
Definition: pubBase.cpp:65
static const std::string & GenId(const std::string &proc_thread_name, const std::string &pub_thread_name)
Generate an ID for the Publisher.
Definition: pubBase.cpp:10
const std::string DB_NODE_PUB_NAME
Definition: pubBase.hpp:21
void Deactivate()
Definition: pubBase.cpp:613
virtual void EstimateExecutionUser(double &duration, int64_t &nb_of_frames)
Definition: pubBase.cpp:679
void Reset()
Reset the members in the publisher status.
Definition: pubBase.cpp:44
bool m_setup_enabled
Definition: pubBase.hpp:260
void GetFilesStored(std::vector< std::string > &files_stored) const
Get the names of the output files stored.
Definition: pubBase.cpp:127
Class used by a Publisher to handle its own publisher status.
Definition: pubBase.hpp:32
const std::string & GetPubThreadName() const
Definition: pubBase.cpp:465
static void CreatePubObj(const std::string &class_name, const std::string &proc_thread_name, const std::string &pub_thread_name, PubBase **new_object)
Definition: pubBase.cpp:233
std::string ToString() const
Generate a summarising, one line status of the object instance.
Definition: pubBase.cpp:167
static const std::map< std::string, std::shared_ptr< PubBase > > & GetPubFactoryObjs()
Generate vector with references to the Publisher Factory Objects registered.
Definition: pubBase.cpp:210
PubStatus GetStatus() const
Return the status of the associated Data Publisher.
Definition: pubBase.cpp:77
PubStatus
Defines the various possible states of a Data Publisher.
Definition: base.hpp:285
virtual ~PubBase()
Definition: pubBase.cpp:430
const std::string & GetPubId() const
Definition: pubBase.cpp:455
virtual void DismantleUser()
Definition: pubBase.cpp:665
void IncrFramesHandled()
Increment the number of frame handled by one.
Definition: pubBase.cpp:87
void SetFramesHandled(const int64_t nb_of_frames_handled)
Set the number of frames handled.
Definition: pubBase.cpp:150
PubType GetPublisherType() const
Definition: pubBase.cpp:450
uint64_t GetNbOfFilesStored() const
Get the number of files stored (for a Recording Publisher).
Definition: pubBase.cpp:120
double GetStartTime() const
Get the start time for the previous publishing started (seconds since epoch).
Definition: pubBase.cpp:82
const std::string DB_NODE_PUB_FRAMES_HANDLED
Definition: pubBase.hpp:25
const std::string DB_NODE_PUB_NB_OF_FILES_STORED
Definition: pubBase.hpp:27
void IncrVolumeHandled(const uint32_t vol)
Increase the volume handled by the Data Publisher with the given number.
Definition: pubBase.cpp:99
const std::string DB_NODE_PUB_STATUS
Definition: pubBase.hpp:24
PubBase()
Definition: pubBase.cpp:414
bool m_stat_active
Definition: pubBase.hpp:261
void Activate()
Definition: pubBase.cpp:590
Class for implementing CCF Data Publishers.
Definition: pubBase.hpp:114
void SetEnabled(const bool enabled)
Definition: pubBase.cpp:470
void SetFilesStored(const std::vector< std::string > &files_stored)
Set the names of the files stored.
Definition: pubBase.cpp:160
bool GetEnabled() const
Definition: pubBase.cpp:475
void UpdateDbStatus() const
Definition: pubBase.cpp:645
int64_t GetFramesHandled() const
Return the number of frames handled.
Definition: pubBase.cpp:94
Definition: appBase.cpp:8
const std::string DB_NODE_PUB_START
Definition: pubBase.hpp:23
PublisherStatus()
Definition: pubBase.cpp:39
static void GetPubObjs(std::vector< PubBase * > &pub_objs)
Get reference to all Data Publisher Objects registered.
Definition: pubBase.cpp:352
const std::string DB_NODE_PUB_ID
Definition: pubBase.hpp:20
void SetStatus(const PubStatus status)
Set the status of the Publisher Status object.
Definition: pubBase.cpp:70
void Dismantle()
Definition: pubBase.cpp:658
const std::string DB_NODE_ADAPTER
Definition: pubBase.hpp:22
static void AddPubFactoryObj(TYPE &pub_factory_obj)
Static method to register a Data Publisher factory object in the internal registry.
Definition: pubBase.hpp:123
void SetActivated(const bool activated)
Definition: pubBase.cpp:508
void ResetDbStatus() const
Update status for a given Publisher Thread in the OLDB.
Definition: pubBase.cpp:629
bool GetActivated() const
Definition: pubBase.cpp:524
std::string ToString() const
Definition: pubBase.cpp:686
static void GetPubObj(const std::string &proc_thread_name, const std::string &pub_thread_name, PubBase **pub_obj, const bool initialise=true)
Definition: pubBase.cpp:277
int64_t GetVolumeHandled() const
Return the volume handled.
Definition: pubBase.cpp:106
static bool HasPubObj(const std::string &proc_thread_name, const std::string &pub_thread_name, PubBase **pub_obj)
Check if a Publisher object is defined.
Definition: pubBase.cpp:320
void Publish(DataFrame &frame, const bool force)
Definition: pubBase.cpp:529
PublisherStatus & operator=(const PublisherStatus &source)
Definition: pubBase.cpp:55
const std::string & GetProcThreadName() const
Definition: pubBase.cpp:460
void AddFileStored(const std::string &new_file)
Definition: pubBase.cpp:113
const std::string DB_NODE_PUB_FILES_STORED
Definition: pubBase.hpp:28
PubType m_publisher_type
Definition: pubBase.hpp:258
virtual void PublishUser(DataFrame &frame)
Definition: pubBase.cpp:566
void Initialise()
Definition: pubBase.cpp:480
Frame class used to store the data and metadata for one frames received from the camera.
Definition: dataFrame.hpp:17
bool m_initialised
Definition: pubBase.hpp:259
virtual void DeactivateUser()
Definition: pubBase.cpp:623
log4cplus::Logger & Logger()
Definition: base.cpp:9