#pragma once #include namespace InfrastructureManagement { class DataPlugin final : public DataPluginBase::Plugin { Q_PLUGIN_METADATA(IID "data:3:ism") Q_OBJECT public: DataPlugin() = default; ~DataPlugin() = default; QString pluginName() const override { return QStringLiteral("InfrastructureManagement.Data"); } std::shared_ptr createDataInterface(LtsSession::LtsSessionDataDds *session) override; bool availableInPartition(IDL::PartitionType partition) const override { return partition == IDL::PartitionType::Exercise || partition == IDL::PartitionType::Global || partition == IDL::PartitionType::Replay; } }; class DataInterfaceImpl final : public DataInterface { public: DataInterfaceImpl(LtsSession::LtsSessionDataDds *session, const std::shared_ptr &dtc, const std::shared_ptr &ftc); std::shared_ptr getDtc() override; std::shared_ptr getFtc() override; std::shared_ptr getForeignDataInterface() override; private: std::shared_ptr m_dtc; std::shared_ptr m_ftc; bool m_dtcEnabled { false }; bool m_ftcEnabled { false }; LtsSession::LtsSessionDataDds *m_session { nullptr }; std::shared_ptr m_foreignInterface; }; }