44 const std::optional<elt::mal::Mal::Properties> mal_properties = {})
48 m_publisher = elt::mal::CiiFactory::getInstance().getPublisher<TOPIC_TYPE>(
49 elt::mal::Uri(uri), elt::mal::ps::qos::QoS::DEFAULT,
50 mal_properties ? *mal_properties : elt::mal::Mal::Properties());
54 elt::mal::CiiFactory& factory = elt::mal::CiiFactory::getInstance();
56 elt::mal::Mal::Properties mal_properties;
57 auto mal_instance = elt::mal::loadMal(malType, mal_properties);
59 auto uri = elt::mal::Uri(uriStr);
60 std::string scheme = uri.scheme().to_string();
61 factory.registerMal(scheme, mal_instance);
63 m_publisher = factory.getPublisher<TOPIC_TYPE>(uri, elt::mal::ps::qos::QoS::DEFAULT, mal_properties);
64 if (m_publisher ==
nullptr) {
65 throw std::runtime_error(
"Cannot create publisher");
68 auto topicInstance = m_publisher->createDataEntity();
69 if (topicInstance ==
nullptr) {
70 throw std::runtime_error(
"Publisher cannot create data entity");
73 m_instance_publisher = m_publisher->createInstancePublisher(*topicInstance);
74 if (m_instance_publisher ==
nullptr) {
75 throw std::runtime_error(
"Publisher cannot create instance publisher");
79 auto sample = m_instance_publisher->createDataEntity();
80 if (sample ==
nullptr) {
81 throw std::runtime_error(
"Instance publisher cannot create data entity");