Skip to main content

AVxcelerate Simulation Framework 2026 R1 SP01

File i_topic.h

Last update: 22.04.2026

Location: core/communication/i_topic.h

Classes

Namespaces

Includes

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

Connect with Ansys