/** * @RDE_HEADER@ * Routing Test - main connection handling * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include #include #include "logger.h" namespace RoutingService { class DataWriterTask; class TopicDispatcherInterface; class Connection { public: Connection(const dds::domain::DomainParticipant &domainParticipant, const std::string &partition, const std::vector &topicsToRoute, const std::string &desc); ~Connection(); // only valid before initialize() ! void setOutput(Connection *output); bool initialize(); void shutdown(); dds::domain::DomainParticipant domainParticipant() const; dds::pub::Publisher publisher() const; dds::sub::Subscriber subscriber() const; private: bool initTopics(); private: Connection *m_output; dds::domain::DomainParticipant m_domainParticipant; std::unique_ptr m_publisher; std::unique_ptr m_subscriber; std::future m_writerThread; std::unique_ptr m_dataWriterTask; std::vector m_topicsToRoute; std::string m_partition; std::string m_description; NGL::INGLLogger &m_logger; }; } // namespace RoutingService