/** * ProjectDataManagement Function Topic Client interface * $Id$ * $HeadURL$ * $Author$ */ // filename: pdm_ftc.h #pragma once #include #include #include namespace DDSConnector { class DdsConnector; } namespace ProjectDataManagement { namespace Interface { class Ftc { protected: Ftc() = default; public: virtual ~Ftc() = default; /** * Create a new instance for ProjectDataManagement::Interface::Ftc. * The caller takes ownership of the returned instance! */ PDM_CLIENT_EXPORT static std::shared_ptr create(const std::shared_ptr &ddsConnector, bool forceCreate = false); /** * A unique identifier for this FTC */ PDM_CLIENT_EXPORT static inline const char *identifier() { return "ProjectDataManagement.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()) */ virtual bool enableInsertUpdateTranslation(bool enable = true) = 0; virtual bool isInsertUpdateTranslationEnabled() const = 0; virtual bool enableUpdateChargeNames(bool enable = true) = 0; virtual bool isUpdateChargeNamesEnabled() const = 0; virtual bool enableUpdateChargeType(bool enable = true) = 0; virtual bool isUpdateChargeTypeEnabled() const = 0; // // Function Topic 'InsertUpdateTranslation' // class InsertUpdateTranslationReplyHandler { public: InsertUpdateTranslationReplyHandler() = default; virtual ~InsertUpdateTranslationReplyHandler() = default; virtual void onInsertUpdateTranslationReply(const Core::FunctionReplyObject &reply) = 0; }; virtual int64_t insertUpdateTranslationRequest(const InsertUpdateTranslationRequest &request, InsertUpdateTranslationReplyHandler *handler) = 0; virtual int64_t insertUpdateTranslationRequest(const InsertUpdateTranslationRequest &request, const std::function &cb) = 0; virtual int32_t insertUpdateTranslationRequest(const InsertUpdateTranslationRequest &request) noexcept(false) = 0; // await virtual int64_t lastInsertUpdateTranslationRequestUniqueId() const = 0; // // Function Topic 'UpdateChargeNames' // class UpdateChargeNamesReplyHandler { public: UpdateChargeNamesReplyHandler() = default; virtual ~UpdateChargeNamesReplyHandler() = default; virtual void onUpdateChargeNamesReply(const Core::FunctionReplyObject &reply) = 0; }; virtual int64_t updateChargeNamesRequest(const UpdateChargeNamesRequest &request, UpdateChargeNamesReplyHandler *handler) = 0; virtual int64_t updateChargeNamesRequest(const UpdateChargeNamesRequest &request, const std::function &cb) = 0; virtual int32_t updateChargeNamesRequest(const UpdateChargeNamesRequest &request) noexcept(false) = 0; // await virtual int64_t lastUpdateChargeNamesRequestUniqueId() const = 0; // // Function Topic 'UpdateChargeType' // class UpdateChargeTypeReplyHandler { public: UpdateChargeTypeReplyHandler() = default; virtual ~UpdateChargeTypeReplyHandler() = default; virtual void onUpdateChargeTypeReply(const Core::FunctionReplyObject &reply) = 0; }; virtual int64_t updateChargeTypeRequest(const ChargeType &request, UpdateChargeTypeReplyHandler *handler) = 0; virtual int64_t updateChargeTypeRequest(const ChargeType &request, const std::function &cb) = 0; virtual int32_t updateChargeTypeRequest(const ChargeType &request) noexcept(false) = 0; // await virtual int64_t lastUpdateChargeTypeRequestUniqueId() const = 0; }; } // namespace Interface } // namespace ProjectDataManagement