#include "AQTPackageMachinePlug.hpp" #include #include #include "HelloWorld.hpp" #include "HelloWorldPubSubTypes.hpp" AQTPackageMachinePlug::AQTPackageMachinePlug(QObject *parent) : QObject(parent) , participant_(nullptr) , publisher_(nullptr) , topic_(nullptr) , writer_(nullptr) , message_index_(0) { type_ = TypeSupport(new HelloWorldPubSubType()); } AQTPackageMachinePlug::~AQTPackageMachinePlug() { if (writer_ != nullptr) { publisher_->delete_datawriter(writer_); } if (topic_ != nullptr) { participant_->delete_topic(topic_); } if (publisher_ != nullptr) { participant_->delete_publisher(publisher_); } if (participant_ != nullptr) { DomainParticipantFactory::get_instance()->delete_participant(participant_); } } bool AQTPackageMachinePlug::init() { DomainParticipantQos participantQos; participantQos.name("Participant_publisher"); participant_ = DomainParticipantFactory::get_instance()->create_participant(0, participantQos); if (participant_ == nullptr) { qDebug() << "Error creating participant"; return false; } type_.register_type(participant_); publisher_ = participant_->create_publisher(PUBLISHER_QOS_DEFAULT); if (publisher_ == nullptr) { qDebug() << "Error creating publisher"; return false; } topic_ = participant_->create_topic( "HelloWorldTopic", "HelloWorld", TOPIC_QOS_DEFAULT); if (topic_ == nullptr) { qDebug() << "Error creating topic"; return false; } writer_ = publisher_->create_datawriter( topic_, DATAWRITER_QOS_DEFAULT); if (writer_ == nullptr) { qDebug() << "Error creating data writer"; return false; } qDebug() << "DDS initialization completed"; return true; } void AQTPackageMachinePlug::publishOnce() { HelloWorld st; st.index(message_index_); st.message("Hello World " + std::to_string(message_index_)); if (writer_ != nullptr) { writer_->write(&st); emit messagePublished(QString::fromStdString(st.message()), message_index_); } else { qDebug() << "DataWriter not initialized"; } message_index_++; } QString AQTPackageMachinePlug::echo(const QString& message) { return QString("Plugin Echo: %1").arg(message); } int AQTPackageMachinePlug::calculate(int a, int b) { return a + b; }