File i_topic.h
Last update: 22.04.2026Location: core/communication/i_topic.h
Classes
Namespaces
Includes
- core/communication/i_publisher.h
- core/communication/i_subscriber.h
- core/export/simfwk_core_export.h
Included by
Source
#ifndef SIMFWK_CORE_COMMUNICATION_ITOPIC_H
#define SIMFWK_CORE_COMMUNICATION_ITOPIC_H
#include "core/communication/i_publisher.h"
#include "core/communication/i_subscriber.h"
#include "core/export/simfwk_core_export.h"
namespace simulation_framework
{
namespace core
{
enum class TopicType
{
kRTIDDS = 0,
kGRPC
};
using TopicId = std::string;
class SIMFWK_CORE_API ITopic
{
public:
virtual ~ITopic() = default;
virtual TopicId GetId() const = 0;
virtual TopicType GetType() const = 0;
virtual std::size_t SubscriberCount() const = 0;
virtual std::size_t PublisherCount() const = 0;
virtual void AddPublisher(std::unique_ptr<IPublisher> pub_ptr) = 0;
virtual void AddSubscriber(std::unique_ptr<ISubscriber> sub_ptr) = 0;
virtual void ClearPubSub() = 0;
virtual const Subscribers& GetSubscribers() const = 0;
virtual const Publishers& GetPublishers() const = 0;
};
using TopicIdVector = std::vector<TopicId>;
using Topics = std::vector<std::shared_ptr<ITopic>>;
} // namespace core
} // namespace simulation_framework
#endif // SIMFWK_CORE_COMMUNICATION_ITOPIC_H