/** * {{ namespace }} Function Topic Server implementation * $Id$ * $HeadURL$ * $Author$ */ {% autoescape off %} // filename: {{ namespace_abbr }}_fts_impl.h #pragma once #include <{{ include_prefix }}/{{ namespace_abbr }}_fts.h> #include <{{ include_prefix }}/{{ namespace_abbr }}_fts_types.h> #include <{{ include_prefix }}/logger.h> #include #include #if !defined(MAKE_SVC{{ namespace_abbr_upper }}SERVER_LIB) #error "You are not allowed to include this file in your code!" #endif namespace {{ namespace }} { namespace Interface { class FtsImpl final : public QObject, public Fts { Q_OBJECT public: explicit FtsImpl(const std::shared_ptr &ddsConnector); ~FtsImpl(); bool enableAll(bool enable = true) override; {% for ft in functionTopics.member %} // // {{ ft.name }} // public: bool enable{{ ft.name }}(bool enable = true) override; bool is{{ ft.name }}Enabled() const override { return m_fts{{ ft.name }} != nullptr && m_{{ ft.requestHandlerFlc }} != nullptr; } bool {{ ft.replyFlc }}(const rti::core::SampleIdentity &cookie, const {{ ft.replyType }} &reply) override; {% if ft.isCoreFt %} bool {{ ft.replyFlc }}(const rti::core::SampleIdentity &cookie, const Core::FunctionReplyObject &replyObject) override; {% endif %} void set{{ ft.requestHandler }}({{ ft.requestHandler }} *handler) override; private Q_SLOTS: void {{ ft.onRequest }}(const rti::core::SampleIdentity &cookie, const {{ namespace }}::{{ ft.request }} &request); private: std::unique_ptr m_fts{{ ft.name }}; {{ ft.requestHandler }} *m_{{ ft.requestHandlerFlc }} = nullptr; {% endfor %} private: std::shared_ptr m_ddsConnector; LOGGER_T m_logger; }; } // namespace Interface } // namespace {{ namespace }} {% endautoescape %}