    

 ## On this page

  

 

 # base\_activity

 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\_topic.h"

<a id="l00009" name="l00009"></a> 9 \#include "core/lifecycle/activity/i\_activity.h"

<a id="l00010" name="l00010"></a> 10 \#include "core/scheduler/i\_scheduler\_client/i\_scheduler\_client.h"

<a id="l00011" name="l00011"></a> 11 

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

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

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

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

<a id="l00025" name="l00025"></a> 25 {

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

<a id="l00027" name="l00027"></a> 27 class CommunicationManager;

<a id="l00028" name="l00028"></a> 28 using CommunicationManagerPtr = std::shared_ptr&lt;CommunicationManager&gt;;

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

<a id="l00035" name="l00035"></a> 35 namespace [lifecycle](namespacelifecycle.xhtml)

<a id="l00036" name="l00036"></a> 36 {

<a id="l00084" name="l00084"></a>[ 84](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml) class [BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml) : public [IActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1IActivity.xhtml)

<a id="l00085" name="l00085"></a> 85 {

<a id="l00086" name="l00086"></a> 86 public:

<a id="l00092" name="l00092"></a> 92 [BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a4ccbf97b81ac7b2a43ceef2c151138e1)(const std::string&amp; activity_name, const Topics&amp; topics);

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

<a id="l00100" name="l00100"></a> 100 [BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a4ccbf97b81ac7b2a43ceef2c151138e1)(const std::string&amp; activity_name, const Topics&amp; topics, std::chrono::milliseconds timeout);

<a id="l00101" name="l00101"></a> 101 

<a id="l00105" name="l00105"></a> 105 virtual [~BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aa52831f008141d199920090685f078fd)();

<a id="l00106" name="l00106"></a> 106 

<a id="l00110" name="l00110"></a> 110 std::string [GetName](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a11d72f1e983f825e5d812224aa43c432)() const override;

<a id="l00111" name="l00111"></a> 111 

<a id="l00116" name="l00116"></a> 116 void [Init](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aadc85940a2653f656639ee27a2faf545)() final;

<a id="l00117" name="l00117"></a> 117 

<a id="l00122" name="l00122"></a> 122 void [Step](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a45bf4108dc4b3b77b4ca997b824ea07f)() final;

<a id="l00123" name="l00123"></a> 123 

<a id="l00124" name="l00124"></a> 124 protected:

<a id="l00128" name="l00128"></a> 128 virtual void [ExecuteStep](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aaf5d84e0430a2703b697eb867e8bf303)() = 0;

<a id="l00129" name="l00129"></a> 129 

<a id="l00133" name="l00133"></a> 133 virtual void [AddPublisherAndSubscriber](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aa898aa5e721f110f678994731a05aa6e)() = 0;

<a id="l00134" name="l00134"></a> 134 

<a id="l00140" name="l00140"></a> 140 template &lt;typename Topic&gt;

<a id="l00141" name="l00141"></a> 141 void [AddPublisher](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a33e63ce3d3f544b5bfef0e8955b81a81)(const core::TopicId&amp; topic_id, typename Topic::PublisherCallback callback);

<a id="l00142" name="l00142"></a> 142 

<a id="l00148" name="l00148"></a> 148 template &lt;typename Topic&gt;

<a id="l00149" name="l00149"></a> 149 void [AddSubscriber](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a680815941f7e02b42000251dc70e798b)(const core::TopicId&amp; topic_id, typename Topic::SubscriberMessageCallback callback);

<a id="l00150" name="l00150"></a> 150 

<a id="l00155" name="l00155"></a> 155 void [Shutdown](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#acc8bec69df5273816415a93d9dca2c13)() override final;

<a id="l00156" name="l00156"></a> 156 

<a id="l00157" name="l00157"></a> 157 private:

<a id="l00162" name="l00162"></a> 162 bool WaitForPubSubConnection() override final;

<a id="l00163" name="l00163"></a> 163 

<a id="l00164" name="l00164"></a> 164 std::string name_;

<a id="l00165" name="l00165"></a> 165 CommunicationManagerPtr communication_manager_ptr_;

<a id="l00166" name="l00166"></a> 166 scheduling::ISchedulerClientPtr scheduler_client_ptr_;

<a id="l00167" name="l00167"></a> 167 std::chrono::milliseconds timeout_;

<a id="l00168" name="l00168"></a> 168 };

<a id="l00169" name="l00169"></a> 169 

<a id="l00170" name="l00170"></a> 170 } // namespace lifecycle

<a id="l00171" name="l00171"></a> 171 } // namespace core

<a id="l00172" name="l00172"></a> 172 } // namespace simulation\_framework