18#ifndef HLCC_OLDBMUX_CIIOLDBDATAPOINTMUX_HPP_
19#define HLCC_OLDBMUX_CIIOLDBDATAPOINTMUX_HPP_
21#include "ciiOldbDataPoint.hpp"
22#include "ciiOldbDpValue.hpp"
23#include "ciiOldbDpQuality.hpp"
27#include <mal/utility/Uri.hpp>
29#include <ciiLogManager.hpp>
54 std::shared_ptr<::elt::oldb::CiiOldbDpValue<T>>
ReadValue(
bool check_bad_quality =
true);
58 int64_t timestamp = ::elt::oldb::CiiOldbUtil::Now(),
59 bool is_disable_publishing =
false);
64 ::elt::oldb::CiiOldbDpQuality quality,
65 const bool is_disable_publish =
false,
66 const std::string *overridden_server_alias =
nullptr,
67 const std::size_t *overriden_value_size_limit_remotefs =
nullptr);
72 int64_t timestamp = ::elt::oldb::CiiOldbUtil::Now());
78 ::elt::oldb::CiiOldbDpQuality quality);
81 const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription<T>>& listener,
82 bool answer_immediately =
false);
84 void Unsubscribe(
const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription<T>>& listener);
86 std::shared_ptr<::elt::config::classes::meta::MdOldb<T>>
GetMetadata()
const;
88 void SetMetadata(
const std::string& meta_data_instance_name);
90 void SetQuality(::elt::oldb::CiiOldbDpQuality quality);
92 ::elt::common::CiiBasicDataType
GetType()
const;
96 std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>>
m_mainDp;
98 std::vector<std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>>>
m_secondaries;
110 std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> mainDp)
116 ::elt::mal::Uri& uri) {
118 auto oldb = ::elt::oldb::CiiOldbFactory::GetInstance();
119 auto dp = oldb->GetDataPoint<T>(uri);
120 m_secondaries.push_back(dp);
129std::shared_ptr<::elt::oldb::CiiOldbDpValue<T>>
131 return m_mainDp->ReadValue (check_bad_quality);
136 const T& value, int64_t timestamp,
bool is_disable_publishing) {
138 m_mainDp->WriteValue(value, timestamp, is_disable_publishing);
140 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
141 dp->WriteValue(value, timestamp, is_disable_publishing);
149 ::elt::oldb::CiiOldbDpQuality quality,
150 const bool is_disable_publish,
151 const std::string *overridden_server_alias,
152 const std::size_t *overriden_value_size_limit_remotefs) {
154 m_mainDp->WriteValue(value, timestamp, quality, is_disable_publish,
155 overridden_server_alias, overriden_value_size_limit_remotefs);
157 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
158 dp->WriteValue(value, timestamp, quality, is_disable_publish,
159 overridden_server_alias, overriden_value_size_limit_remotefs);
169 m_mainDp->WriteValue(value, size, timestamp);
171 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
172 dp->WriteValue(value, size, timestamp);
181 ::elt::oldb::CiiOldbDpQuality quality) {
183 m_mainDp->WriteValue(value, size, timestamp, quality);
185 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
186 dp->WriteValue(value, size, timestamp, quality);
192 const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription<T>>& listener,
193 bool answer_immediately) {
195 m_mainDp->Subscribe(listener, answer_immediately);
200 const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription<T> >& listener) {
202 m_mainDp->Unscribe(listener);
206std::shared_ptr<::elt::config::classes::meta::MdOldb<T>>
209 return m_mainDp->GetMetadata();
214 const std::string& meta_data_instance_name) {
216 m_mainDp->SetMetadata(meta_data_instance_name);
218 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
219 dp->SetMetadata(meta_data_instance_name);
226 ::elt::oldb::CiiOldbDpQuality quality) {
228 m_mainDp->SetQuality(quality);
230 for (std::shared_ptr<::elt::oldb::CiiOldbDataPoint<T>> dp : m_secondaries) {
231 dp->SetQuality(quality);
238 return m_mainDp->getType();
CiiOldbDataPointMux is a wrapper for multiple CiiOldbDataPoints, to allow writing changes (to value,...
Definition ciiOldbDataPointMux.hpp:40
CiiOldbDataPointMux(std::shared_ptr<::elt::oldb::CiiOldbDataPoint< T > > mainDp)
Definition ciiOldbDataPointMux.hpp:109
std::shared_ptr<::elt::config::classes::meta::MdOldb< T > > GetMetadata() const
Definition ciiOldbDataPointMux.hpp:207
std::vector< std::shared_ptr<::elt::oldb::CiiOldbDataPoint< T > > > m_secondaries
Definition ciiOldbDataPointMux.hpp:98
void SetMetadata(const std::string &meta_data_instance_name)
Definition ciiOldbDataPointMux.hpp:213
void Subscribe(const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription< T > > &listener, bool answer_immediately=false)
Definition ciiOldbDataPointMux.hpp:191
const std::string LOGGER_NAME
Definition ciiOldbDataPointMux.hpp:100
void SetQuality(::elt::oldb::CiiOldbDpQuality quality)
Definition ciiOldbDataPointMux.hpp:225
std::shared_ptr<::elt::oldb::CiiOldbDpValue< T > > ReadValue(bool check_bad_quality=true)
Definition ciiOldbDataPointMux.hpp:130
void AddSecondary(::elt::mal::Uri &uri)
Definition ciiOldbDataPointMux.hpp:115
::elt::common::CiiBasicDataType GetType() const
Definition ciiOldbDataPointMux.hpp:236
std::shared_ptr<::elt::oldb::CiiOldbDataPoint< T > > m_mainDp
Definition ciiOldbDataPointMux.hpp:96
void Unsubscribe(const std::shared_ptr<::elt::oldb::CiiOldbDpSubscription< T > > &listener)
Definition ciiOldbDataPointMux.hpp:199
void WriteValue(const T &value, int64_t timestamp=::elt::oldb::CiiOldbUtil::Now(), bool is_disable_publishing=false)
Definition ciiOldbDataPointMux.hpp:135
log4cplus::Logger logger
Definition ciiOldbDataPointMux.hpp:101
Definition ciiOldbDataPointAsync.hpp:34