#ifndef WEIGHUI_DDS_SUBSCRIBER_HPP #define WEIGHUI_DDS_SUBSCRIBER_HPP #include #include #include #include #include #include #include #include #include "WeighingDDSTypePubSubTypes.hpp" class DdsSubscriberApp : public eprosima::fastdds::dds::DataReaderListener { public: DdsSubscriberApp(const int& domain_id); virtual ~DdsSubscriberApp(); void on_data_available(eprosima::fastdds::dds::DataReader* reader) override; void on_subscription_matched( eprosima::fastdds::dds::DataReader* reader, const eprosima::fastdds::dds::SubscriptionMatchedStatus& info) override; void run(); void stop(); private: bool is_stopped(); std::shared_ptr factory_; eprosima::fastdds::dds::DomainParticipant* participant_; eprosima::fastdds::dds::Subscriber* subscriber_; eprosima::fastdds::dds::Topic* summary_topic_; eprosima::fastdds::dds::DataReader* summary_reader_; eprosima::fastdds::dds::TypeSupport summary_type_; // 排队成功 (上位机发布) → WeighUI 取 display_text 显示 eprosima::fastdds::dds::Topic* queuesuccess_topic_; eprosima::fastdds::dds::DataReader* queuesuccess_reader_; eprosima::fastdds::dds::TypeSupport queuesuccess_type_; std::atomic stop_; uint32_t period_ms_ = 100; mutable std::mutex terminate_cv_mtx_; std::condition_variable terminate_cv_; }; #endif