/** * {{ namespace }} Function Topic Client interface * $Id$ * $HeadURL$ * $Author$ */ {% autoescape off %} // filename: {{ namespace_abbr }}_ftc.h #pragma once #include <{{ include_prefix }}/{{ namespace_abbr }}_export.h> #include <{{ include_prefix }}/{{ namespace_abbr }}.hpp> #include namespace DDSConnector { class DdsConnector; } namespace {{ namespace }} { namespace Interface { class Ftc { protected: Ftc() = default; public: virtual ~Ftc() = default; /** * Create a new instance for {{ namespace }}::Interface::Ftc. * The caller takes ownership of the returned instance! */ {{ namespace_abbr_upper }}_CLIENT_EXPORT static std::shared_ptr create(const std::shared_ptr &ddsConnector, bool forceCreate = false); /** * A unique identifier for this FTC */ {{ namespace_abbr_upper }}_CLIENT_EXPORT static inline const char *identifier() { return "{{ namespace }}.Interface.Ftc"; } /** * initialize this Ftc instance with all function topic clients */ virtual bool enableAll(bool enable = true) = 0; /** * only initialize the specific function topic client (can be called instead enableAll()) */ {% for ft in functionTopics.member %} virtual bool enable{{ ft.name }}(bool enable = true) = 0; virtual bool is{{ ft.name }}Enabled() const = 0; {% endfor %} {% for ft in functionTopics.member %} // // Function Topic '{{ ft.name }}' // class {{ ft.replyHandler }} { public: {{ ft.replyHandler }}() = default; virtual ~{{ ft.replyHandler }}() = default; virtual void {{ ft.onReply }}(const {{ ft.replyTypeFro }} &reply) = 0; }; virtual int64_t {{ ft.requestFlc }}(const {{ ft.requestType }} &request, {{ ft.replyHandler }} *handler) = 0; virtual int64_t {{ ft.requestFlc }}(const {{ ft.requestType }} &request, const std::function &cb) = 0; virtual {% if ft.isCoreFt %}int32_t{% else %}{{ ft.replyTypeFro }}{% endif %} {{ ft.requestFlc }}(const {{ ft.requestType }} &request) noexcept(false) = 0; // await virtual int64_t last{{ ft.request }}UniqueId() const = 0; {% endfor %} }; } // namespace Interface } // namespace {{ namespace }} {% endautoescape %}