    

 ## On this page

  

 

 # i\_topic

 Last update: 16.07.2025 

<a id="l00001" name="l00001"></a> 1 

<a id="l00005" name="l00005"></a> 5 

<a id="l00006" name="l00006"></a> 6\#pragma once

<a id="l00007" name="l00007"></a> 7 

<a id="l00008" name="l00008"></a> 8\#include "core/communication/i\_publisher.h"

<a id="l00009" name="l00009"></a> 9\#include "core/communication/i\_subscriber.h"

<a id="l00010" name="l00010"></a> 10 

<a id="l00015" name="l00015"></a> 15namespace [simulation\_framework](namespacesimulation__framework.xhtml)

<a id="l00016" name="l00016"></a> 16{

<a id="l00017" name="l00017"></a> 17namespace [core](namespacecore.xhtml)

<a id="l00018" name="l00018"></a> 18{

<a id="l00019" name="l00019"></a> 19 

<a id="l00025" name="l00025"></a> 25enum class TopicType

<a id="l00026" name="l00026"></a> 26{

<a id="l00027" name="l00027"></a> 27 kRTIDDS = 0,

<a id="l00028" name="l00028"></a> 28 kGRPC

<a id="l00029" name="l00029"></a> 29};

<a id="l00030" name="l00030"></a> 30using TopicId = std::string;

<a id="l00031" name="l00031"></a> 31 

<a id="l00036" name="l00036"></a>[ 36](classsimulation__framework_1_1core_1_1ITopic.xhtml)class [ITopic](classsimulation__framework_1_1core_1_1ITopic.xhtml)

<a id="l00037" name="l00037"></a> 37{

<a id="l00038" name="l00038"></a> 38 public:

<a id="l00039" name="l00039"></a> 39 virtual [~ITopic](classsimulation__framework_1_1core_1_1ITopic.xhtml)() = default;

<a id="l00040" name="l00040"></a> 40 

<a id="l00044" name="l00044"></a>[ 44](classsimulation__framework_1_1core_1_1ITopic.xhtml#ad4e077cd059e9c6f0ce9ad0df73ca3cd) virtual TopicId [GetId](classsimulation__framework_1_1core_1_1ITopic.xhtml#ad4e077cd059e9c6f0ce9ad0df73ca3cd)() const = 0;

<a id="l00045" name="l00045"></a> 45 

<a id="l00049" name="l00049"></a>[ 49](classsimulation__framework_1_1core_1_1ITopic.xhtml#a461f8684a1e5190affbe69253f74fdb7) virtual TopicType [GetType](classsimulation__framework_1_1core_1_1ITopic.xhtml#a461f8684a1e5190affbe69253f74fdb7)() const = 0;

<a id="l00050" name="l00050"></a> 50 

<a id="l00054" name="l00054"></a>[ 54](classsimulation__framework_1_1core_1_1ITopic.xhtml#a370ff9b0059ea1c200e6a5384671aac8) virtual std::size_t [SubscriberCount](classsimulation__framework_1_1core_1_1ITopic.xhtml#a370ff9b0059ea1c200e6a5384671aac8)() const = 0;

<a id="l00055" name="l00055"></a> 55 

<a id="l00060" name="l00060"></a>[ 60](classsimulation__framework_1_1core_1_1ITopic.xhtml#a469c0e1f5fd07f9829e93fd8a43bd6f7) virtual std::size_t [PublisherCount](classsimulation__framework_1_1core_1_1ITopic.xhtml#a469c0e1f5fd07f9829e93fd8a43bd6f7)() const = 0;

<a id="l00061" name="l00061"></a> 61 

<a id="l00067" name="l00067"></a>[ 67](classsimulation__framework_1_1core_1_1ITopic.xhtml#aadab7c49ae9beaa036d3fa9845aed85d) virtual void [AddPublisher](classsimulation__framework_1_1core_1_1ITopic.xhtml#aadab7c49ae9beaa036d3fa9845aed85d)(std::unique_ptr&lt;IPublisher&gt; pub_ptr) = 0;

<a id="l00068" name="l00068"></a> 68 

<a id="l00073" name="l00073"></a>[ 73](classsimulation__framework_1_1core_1_1ITopic.xhtml#a612d64a1aca7a60a8efc7f07f4d28311) virtual void [AddSubscriber](classsimulation__framework_1_1core_1_1ITopic.xhtml#a612d64a1aca7a60a8efc7f07f4d28311)(std::unique_ptr&lt;ISubscriber&gt; sub_ptr) = 0;

<a id="l00074" name="l00074"></a> 74 

<a id="l00078" name="l00078"></a>[ 78](classsimulation__framework_1_1core_1_1ITopic.xhtml#a470392793ee8cb2fc406b8b1e1b55d2d) virtual void [ClearPubSub](classsimulation__framework_1_1core_1_1ITopic.xhtml#a470392793ee8cb2fc406b8b1e1b55d2d)() = 0;

<a id="l00079" name="l00079"></a> 79 

<a id="l00083" name="l00083"></a>[ 83](classsimulation__framework_1_1core_1_1ITopic.xhtml#a52c9a4a95089eb1dfbc0606974d9a8d0) virtual const Subscribers&amp; [GetSubscribers](classsimulation__framework_1_1core_1_1ITopic.xhtml#a52c9a4a95089eb1dfbc0606974d9a8d0)() const = 0;

<a id="l00084" name="l00084"></a> 84 

<a id="l00088" name="l00088"></a>[ 88](classsimulation__framework_1_1core_1_1ITopic.xhtml#aa02ef4f55132426e2af9de01bde3bf4b) virtual const Publishers&amp; [GetPublishers](classsimulation__framework_1_1core_1_1ITopic.xhtml#aa02ef4f55132426e2af9de01bde3bf4b)() const = 0;

<a id="l00089" name="l00089"></a> 89};



<a id="l00090" name="l00090"></a> 90 

<a id="l00091" name="l00091"></a> 91using TopicIdVector = std::vector&lt;TopicId&gt;;

<a id="l00092" name="l00092"></a> 92using Topics = std::vector&lt;std::shared_ptr&lt;ITopic&gt;&gt;;

<a id="l00093" name="l00093"></a> 93 

<a id="l00094" name="l00094"></a> 94} // namespace core

<a id="l00095" name="l00095"></a> 95} // namespace simulation\_framework

[simulation\_framework::core::ITopic](classsimulation__framework_1_1core_1_1ITopic.xhtml)

**Definition** [i\_topic.h:37](i__topic_8h_source.xhtml#l00036)



[simulation\_framework::core::ITopic::SubscriberCount](classsimulation__framework_1_1core_1_1ITopic.xhtml#a370ff9b0059ea1c200e6a5384671aac8)

virtual std::size_t SubscriberCount() const =0



[simulation\_framework::core::ITopic::GetType](classsimulation__framework_1_1core_1_1ITopic.xhtml#a461f8684a1e5190affbe69253f74fdb7)

virtual TopicType GetType() const =0



[simulation\_framework::core::ITopic::PublisherCount](classsimulation__framework_1_1core_1_1ITopic.xhtml#a469c0e1f5fd07f9829e93fd8a43bd6f7)

virtual std::size_t PublisherCount() const =0



[simulation\_framework::core::ITopic::ClearPubSub](classsimulation__framework_1_1core_1_1ITopic.xhtml#a470392793ee8cb2fc406b8b1e1b55d2d)

virtual void ClearPubSub()=0



[simulation\_framework::core::ITopic::GetSubscribers](classsimulation__framework_1_1core_1_1ITopic.xhtml#a52c9a4a95089eb1dfbc0606974d9a8d0)

virtual const Subscribers &amp; GetSubscribers() const =0



[simulation\_framework::core::ITopic::AddSubscriber](classsimulation__framework_1_1core_1_1ITopic.xhtml#a612d64a1aca7a60a8efc7f07f4d28311)

virtual void AddSubscriber(std::unique_ptr&lt; ISubscriber &gt; sub_ptr)=0



[simulation\_framework::core::ITopic::GetPublishers](classsimulation__framework_1_1core_1_1ITopic.xhtml#aa02ef4f55132426e2af9de01bde3bf4b)

virtual const Publishers &amp; GetPublishers() const =0



[simulation\_framework::core::ITopic::AddPublisher](classsimulation__framework_1_1core_1_1ITopic.xhtml#aadab7c49ae9beaa036d3fa9845aed85d)

virtual void AddPublisher(std::unique_ptr&lt; IPublisher &gt; pub_ptr)=0



[simulation\_framework::core::ITopic::GetId](classsimulation__framework_1_1core_1_1ITopic.xhtml#ad4e077cd059e9c6f0ce9ad0df73ca3cd)

virtual TopicId GetId() const =0



[core](namespacecore.xhtml)

The namespace for all core functionalities under namespace simulation_framework.



[simulation\_framework](namespacesimulation__framework.xhtml)

The top namespace for simulation framework.