#pragma once #include "ddkit/base/ThreadSync.hpp" #include "ddkit/access/TopicPoolWrite.hpp" #include "ddkit/access/TopicPoolRead.hpp" #include "ddkit/idls/ActorInfo.hpp" #include "ddkit/actors/ActorInfo.hpp" #include "ddkit/actors/ActorInfoDb.hpp" namespace ddkit { namespace actors { ActorConfiguration actorInfoToActorConfiguration(ddkit_intern::ActorInfo actorInfo); ActorInfo actorInfoToActorInfo(const ddkit_intern::ActorInfo& ddsActorInfo); /// @brief Caretaker for actorInfo. /// Registers for ActorInfo-msgs on dds and stores them in ActorInfoDb. class ActorInfoDbCaretaker { public: ActorInfoDbCaretaker(ActorInfoDb& db); ~ActorInfoDbCaretaker(); void init(access::Participant& participant, std::shared_ptr dispatcher); void close(); void onWrite_actorInfo(const ddkit_intern::ActorInfo& actorInfo); void onDispose_actorInfo(const ddkit_intern::ActorInfo& actorInfo); private: ActorInfoDb& m_db; access::IQosStrategyPtr m_qosStrategy; access::ITopicStrategyPtr m_topicStrategy; std::unique_ptr m_topicPoolRead; int m_domainId; }; } // namespace actors } // namespace ddkit