File i_topic.h
Last update: 09.03.2026Location: core/communication/i_topic.h
Classes
Namespaces
Includes
Included by
Source
#pragma once
#include "core/communication/i_publisher.h"
#include "core/communication/i_subscriber.h"
namespace simulation_framework
{
namespace core
{
enum class TopicType
{
kRTIDDS = 0,
kGRPC
};
using TopicId = std::string;
class 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
[static]: https://img.shields.io/badge/-static-lightgrey (static)</std::shared_ptr>