14#ifndef HLCC_OLDBMUX_CIIOLDBDATAPOINTMUX_HPP_
15#define HLCC_OLDBMUX_CIIOLDBDATAPOINTMUX_HPP_
17#include "ciiOldbDataPoint.hpp"
18#include "ciiOldbDpValue.hpp"
19#include "ciiOldbDpQuality.hpp"
23#include <mal/utility/Uri.hpp>
25#include <ciiLogManager.hpp>
50 std::shared_ptr<::elt::oldb::CiiOldbDpValue<T>>
ReadValue(
bool check_bad_quality =
true);
54 int64_t timestamp = ::elt::oldb::CiiOldbUtil::Now(),
55 bool is_disable_publishing =
false);
60 ::elt::oldb::CiiOldbDpQuality quality,
61 const bool is_disable_publish =
false,
62 const std::string *overridden_server_alias =
nullptr,
63 const std::size_t *overriden_value_size_limit_remotefs =
nullptr);
68 int64_t timestamp = ::elt::oldb::CiiOldbUtil::Now());
74 ::elt::oldb::CiiOldbDpQuality quality);
77 const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription<T>>& listener,
78 bool answer_immediately =
false);
80 void Unsubscribe(
const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription<T>>& listener);
82 std::shared_ptr<::elt::config::classes::meta::MdOldb<T>>
GetMetadata()
const;
84 void SetMetadata(
const std::string& meta_data_instance_name);
86 void SetQuality(::elt::oldb::CiiOldbDpQuality quality);
88 ::elt::common::CiiBasicDataType
GetType()
const;
92 std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>>
m_mainDp;
94 std::vector<std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>>>
m_secondaries;
106 std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> mainDp)
112 ::elt::mal::Uri& uri) {
114 auto oldb = ::elt::oldb::CiiOldbFactory::GetInstance();
115 auto dp = oldb->GetDataPoint<T>(uri);
116 m_secondaries.push_back(dp);
125std::shared_ptr<::elt::oldb::CiiOldbDpValue<T>>
127 return m_mainDp->ReadValue (check_bad_quality);
132 const T& value, int64_t timestamp,
bool is_disable_publishing) {
134 m_mainDp->WriteValue(value, timestamp, is_disable_publishing);
136 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
137 dp->WriteValue(value, timestamp, is_disable_publishing);
145 ::elt::oldb::CiiOldbDpQuality quality,
146 const bool is_disable_publish,
147 const std::string *overridden_server_alias,
148 const std::size_t *overriden_value_size_limit_remotefs) {
150 m_mainDp->WriteValue(value, timestamp, quality, is_disable_publish,
151 overridden_server_alias, overriden_value_size_limit_remotefs);
153 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
154 dp->WriteValue(value, timestamp, quality, is_disable_publish,
155 overridden_server_alias, overriden_value_size_limit_remotefs);
165 m_mainDp->WriteValue(value, size, timestamp);
167 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
168 dp->WriteValue(value, size, timestamp);
177 ::elt::oldb::CiiOldbDpQuality quality) {
179 m_mainDp->WriteValue(value, size, timestamp, quality);
181 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
182 dp->WriteValue(value, size, timestamp, quality);
188 const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription<T>>& listener,
189 bool answer_immediately) {
191 m_mainDp->Subscribe(listener, answer_immediately);
196 const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription<T> >& listener) {
198 m_mainDp->Unscribe(listener);
202std::shared_ptr<::elt::config::classes::meta::MdOldb<T>>
205 return m_mainDp->GetMetadata();
210 const std::string& meta_data_instance_name) {
212 m_mainDp->SetMetadata(meta_data_instance_name);
214 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
215 dp->SetMetadata(meta_data_instance_name);
222 ::elt::oldb::CiiOldbDpQuality quality) {
224 m_mainDp->SetQuality(quality);
226 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
227 dp->SetQuality(quality);
234 return m_mainDp->getType();
CiiOldbDataPointMux is a wrapper for multiple CiiOldbDataPoints, to allow writing changes (to value,...
Definition: ciiOldbDataPointMux.hpp:36
CiiOldbDataPointMux(std::shared_ptr<::elt::oldb::CiiOldbDataPoint< T > > mainDp)
Definition: ciiOldbDataPointMux.hpp:105
std::shared_ptr<::elt::config::classes::meta::MdOldb< T > > GetMetadata() const
Definition: ciiOldbDataPointMux.hpp:203
std::vector< std::shared_ptr<::elt::oldb::CiiOldbDataPoint< T > > > m_secondaries
Definition: ciiOldbDataPointMux.hpp:94
void SetMetadata(const std::string &meta_data_instance_name)
Definition: ciiOldbDataPointMux.hpp:209
void Subscribe(const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription< T > > &listener, bool answer_immediately=false)
Definition: ciiOldbDataPointMux.hpp:187
const std::string LOGGER_NAME
Definition: ciiOldbDataPointMux.hpp:96
void SetQuality(::elt::oldb::CiiOldbDpQuality quality)
Definition: ciiOldbDataPointMux.hpp:221
std::shared_ptr<::elt::oldb::CiiOldbDpValue< T > > ReadValue(bool check_bad_quality=true)
Definition: ciiOldbDataPointMux.hpp:126
void AddSecondary(::elt::mal::Uri &uri)
Definition: ciiOldbDataPointMux.hpp:111
::elt::common::CiiBasicDataType GetType() const
Definition: ciiOldbDataPointMux.hpp:232
std::shared_ptr<::elt::oldb::CiiOldbDataPoint< T > > m_mainDp
Definition: ciiOldbDataPointMux.hpp:92
void Unsubscribe(const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription< T > > &listener)
Definition: ciiOldbDataPointMux.hpp:195
void WriteValue(const T &value, int64_t timestamp=::elt::oldb::CiiOldbUtil::Now(), bool is_disable_publishing=false)
Definition: ciiOldbDataPointMux.hpp:131
log4cplus::Logger logger
Definition: ciiOldbDataPointMux.hpp:97
Definition: ciiOldbDataPointAsync.hpp:30