/*** * @Description: 生产者管理类 内含3个不同主题发布者 * @Author: jizhou * @Date: 2023-07-13 19:13:44 * @LastEditors: jizhou * @LastEditTime: 2023-07-16 23:57:01 * @FilePath: /EnvironmentAccess/src/manager/IPCSubscriberManager.h */ #ifndef FAST_DDS_GENERATED__IPCSubscriberManager #define FAST_DDS_GENERATED__IPCSubscriberManager #include <string> #include "BaseManager.h" #include "fastdds/IPCSubscriber.h" using namespace std; class IPCSubscriberManager : public BaseManager<IPCSubscriberManager> { private: /*** * @brief: 构造函数 * @return {*} */ IPCSubscriberManager() = default; std::map<std::string, std::shared_ptr<IPCSubscriberBase>> subscribers_; public: /*** * @brief: 析构函数 * @return {*} */ ~IPCSubscriberManager() = default; friend class BaseManager; template<typename MessageT> std::shared_ptr<IPCSubscriber<MessageT>> createSubscriber(const std::string& topic, size_t qos_profile_depth) { auto subscriber = std::make_shared<IPCSubscriber<MessageT>>(0, topic); subscribers_[topic] = subscriber; return subscriber; } template<typename MessageT> std::shared_ptr<IPCSubscriber<MessageT>> get_subscriber_by_topic(const std::string& topic) { auto it = subscribers_.find(topic); if (it != subscribers_.end()) { return std::dynamic_pointer_cast<IPCSubscriber<MessageT>>(it->second); } return nullptr; } void stopAll() { auto iter = subscribers_.begin(); for(; iter!= subscribers_.end(); iter++) { iter->second->stop(); } } }; #endif