/** * {{ namespace_abbr_upper }} Data Topic Server Interface * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-07 */ {% autoescape off %} // filename: {{ namespace_abbr }}_dts_impl.cpp #include "{{ namespace_abbr }}_dts_impl.h" #include namespace {{ namespace }} { namespace Interface { // initializer function std::shared_ptr Dts::create(const std::shared_ptr &ddsConnector) { return std::make_shared(ddsConnector); } // DtsImpl DtsImpl::DtsImpl(const std::shared_ptr &ddsConnector) : Dts() , m_ddsConnector(ddsConnector) , m_logger(getLogger("Dts")) {} DtsImpl::~DtsImpl() { enableAll(false); } bool DtsImpl::enableAll(bool enable) { {% for dt in dataTopics.member %} {% if dt.dtsImpl %} if (!enable{{ dt.name }}(enable)) { WARNING_LOG(m_logger) << "Error initializing data topic {{ dt.name }}"; return false; } {% endif %} {% endfor %} return true; } {% for dt in dataTopics.member %} {% if dt.dtsImpl %} // // Data Topic '{{ dt.name }}' // bool DtsImpl::enable{{ dt.name }}(bool enable) { if (enable) { if (m_dts{{ dt.name }}) { INFO_LOG(m_logger) << "{{ ft.name }} already enabled!"; return true; } m_dts{{ dt.name }}.reset(m_ddsConnector->createDTS()); assert(m_dts{{ dt.name }}.get()); } else { m_dts{{ dt.name }} = nullptr; } return true; } bool DtsImpl::publish(const {{ namespace }}::{{ dt.type }} &data) { if (!m_dts{{ dt.name }}) { WARNING_LOG(m_logger) << "Error publishing data topic {{ dt.name }} - not enabled"; Q_ASSERT(false); return false; } return m_dts{{ dt.name }}->write(data); } {% if dt.key.name %} bool DtsImpl::remove{{ dt.name }}ByKey({{ dt.key.cppTypeCr }} {{ dt.key.nameFlc }}, bool errorMsgIfSampleDoesNotExists) { if (!m_dts{{ dt.name }}) { WARNING_LOG(m_logger) << "Error removing data topic {{ dt.name }} - not enabled"; Q_ASSERT(false); return false; } {{ namespace }}::{{ dt.name }} data; data.{{ dt.key.name }}({{ dt.key.name }}); return m_dts{{ dt.name }}->remove(data, errorMsgIfSampleDoesNotExists); } {% endif %} {% endif %} {% endfor %} } // namespace Interface } // namespace {{ namespace }} {% endautoescape %}