    

 ## 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/communication/topic\_registry.h"

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

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

<a id="l00012" name="l00012"></a> 12 

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

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

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

<a id="l00020" name="l00020"></a> 20{

<a id="l00021" name="l00021"></a> 21 

<a id="l00022" name="l00022"></a> 22class CommunicationManager;

<a id="l00023" name="l00023"></a> 23 

<a id="l00024" name="l00024"></a> 24namespace lifecycle

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

<a id="l00026" name="l00026"></a> 26// clang-format off

<a id="l00075" name="l00075"></a> 75// clang-format on

<a id="l00076" name="l00076"></a> 76 

<a id="l00077" name="l00077"></a>[ 77](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="l00078" name="l00078"></a> 78{

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

<a id="l00086" name="l00086"></a>[ 86](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a95dfde5a91f76076db6bc011995dcee1) [BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a95dfde5a91f76076db6bc011995dcee1)(const std::string&amp; [activity\_name](classsimulation__framework_1_1core_1_1Topic.xhtml),

<a id="l00087" name="l00087"></a> 87 std::shared_ptr&lt;core::CommunicationManager&gt; [communication\_manager\_ptr](classsimulation__framework_1_1core_1_1Topic.xhtml),

<a id="l00088" name="l00088"></a> 88 std::unique_ptr&lt;scheduling::ISchedulerClient&gt; [scheduler\_client](classsimulation__framework_1_1core_1_1Topic.xhtml));

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

<a id="l00097" name="l00097"></a>[ 97](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a650b1e86ca7059ad464709ca0d06347f) [BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a650b1e86ca7059ad464709ca0d06347f)(const std::string&amp; [activity\_name](classsimulation__framework_1_1core_1_1Topic.xhtml),

<a id="l00098" name="l00098"></a> 98 std::shared_ptr&lt;core::CommunicationManager&gt; [communication\_manager\_ptr](classsimulation__framework_1_1core_1_1Topic.xhtml),

<a id="l00099" name="l00099"></a> 99 std::unique_ptr&lt;scheduling::ISchedulerClient&gt; [scheduler\_client](classsimulation__framework_1_1core_1_1Topic.xhtml),

<a id="l00100" name="l00100"></a> 100 std::chrono::milliseconds [timeout](classsimulation__framework_1_1core_1_1Topic.xhtml));

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

<a id="l00107" name="l00107"></a>[ 107](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a4ccbf97b81ac7b2a43ceef2c151138e1) [BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a4ccbf97b81ac7b2a43ceef2c151138e1)(const std::string&amp; [activity\_name](classsimulation__framework_1_1core_1_1Topic.xhtml), const Topics&amp; [topics](classsimulation__framework_1_1core_1_1Topic.xhtml));

<a id="l00108" name="l00108"></a> 108 

<a id="l00115" name="l00115"></a>[ 115](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a8a0d6519c43db4cd308cbe2e62af2810) [BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a8a0d6519c43db4cd308cbe2e62af2810)(const std::string&amp; [activity\_name](classsimulation__framework_1_1core_1_1Topic.xhtml), const Topics&amp; [topics](classsimulation__framework_1_1core_1_1Topic.xhtml), std::chrono::milliseconds [timeout](classsimulation__framework_1_1core_1_1Topic.xhtml));

<a id="l00116" name="l00116"></a> 116 

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

<a id="l00121" name="l00121"></a> 121 

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

<a id="l00126" name="l00126"></a> 126 

<a id="l00131" name="l00131"></a>[ 131](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a3355c18c8d6519f9649ec7de4274e645) void [SetUpCommunication](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a3355c18c8d6519f9649ec7de4274e645)() [final](classsimulation__framework_1_1core_1_1Topic.xhtml);

<a id="l00132" name="l00132"></a> 132 

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

<a id="l00138" name="l00138"></a> 138 

<a id="l00142" name="l00142"></a>[ 142](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#ac0a680a9bd6db9111ba085d641a16126) void [Shutdown](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#ac0a680a9bd6db9111ba085d641a16126)() [final](classsimulation__framework_1_1core_1_1Topic.xhtml);

<a id="l00143" name="l00143"></a> 143 

<a id="l00147" name="l00147"></a>[ 147](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a2cfe6105cb8e660b2757e602d4fc1a87) [time](namespacetime.xhtml)::Timestamp [GetCurrentTimestamp](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a2cfe6105cb8e660b2757e602d4fc1a87)() [const](classsimulation__framework_1_1core_1_1Topic.xhtml) [final](classsimulation__framework_1_1core_1_1Topic.xhtml);

<a id="l00148" name="l00148"></a> 148 

<a id="l00152" name="l00152"></a>[ 152](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a2dcf170a633dad7ea1238489c6f9237c) [std](classsimulation__framework_1_1core_1_1Topic.xhtml)::[chrono](classsimulation__framework_1_1core_1_1Topic.xhtml)::milliseconds [GetCycleTime](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a2dcf170a633dad7ea1238489c6f9237c)() [const](classsimulation__framework_1_1core_1_1Topic.xhtml) [final](classsimulation__framework_1_1core_1_1Topic.xhtml);

<a id="l00153" name="l00153"></a> 153 

<a id="l00157" name="l00157"></a>[ 157](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aeca0631080d2751212ad8958d16860e9) [std](classsimulation__framework_1_1core_1_1Topic.xhtml)::string [GetSimulationOutputDirectory](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aeca0631080d2751212ad8958d16860e9)() [const](classsimulation__framework_1_1core_1_1Topic.xhtml) [final](classsimulation__framework_1_1core_1_1Topic.xhtml);

<a id="l00158" name="l00158"></a> 158 

<a id="l00162" name="l00162"></a>[ 162](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a7ff6275fd280b049d2fb985212459c8b) [std](classsimulation__framework_1_1core_1_1Topic.xhtml)::[vector](classsimulation__framework_1_1core_1_1Topic.xhtml)&lt;File&gt; [GetInputFiles](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a7ff6275fd280b049d2fb985212459c8b)() [const](classsimulation__framework_1_1core_1_1Topic.xhtml) [final](classsimulation__framework_1_1core_1_1Topic.xhtml);

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

<a id="l00164" name="l00164"></a> 164 [protected](classsimulation__framework_1_1core_1_1Topic.xhtml):

<a id="l00168" name="l00168"></a>[ 168](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a6dc728a30f6235e11a95020eb6511a99) [virtual](classsimulation__framework_1_1core_1_1Topic.xhtml) void [Init](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a6dc728a30f6235e11a95020eb6511a99)() {}

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

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

<a id="l00174" name="l00174"></a> 174 

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

<a id="l00179" name="l00179"></a> 179 

<a id="l00185" name="l00185"></a> 185 template &lt;typename Topic&gt;

<a id="l00186" name="l00186"></a>[ 186](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a33e63ce3d3f544b5bfef0e8955b81a81) void [AddPublisher](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a33e63ce3d3f544b5bfef0e8955b81a81)(const core::TopicId&amp; [topic\_id](classsimulation__framework_1_1core_1_1Topic.xhtml), typename Topic::PublisherCallback [callback](classsimulation__framework_1_1core_1_1Topic.xhtml));

<a id="l00192" name="l00192"></a> 192 template &lt;typename Topic&gt;

<a id="l00193" name="l00193"></a>[ 193](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a680815941f7e02b42000251dc70e798b) void [AddSubscriber](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a680815941f7e02b42000251dc70e798b)(const core::TopicId&amp; [topic\_id](classsimulation__framework_1_1core_1_1Topic.xhtml), typename Topic::SubscriberMessageCallback [callback](classsimulation__framework_1_1core_1_1Topic.xhtml));

<a id="l00194" name="l00194"></a> 194 

<a id="l00195" name="l00195"></a> 195 private:

<a id="l00200" name="l00200"></a> 200 void WaitForPubSubConnection() override;

<a id="l00201" name="l00201"></a> 201 

<a id="l00202" name="l00202"></a> 202 std::string name_;

<a id="l00203" name="l00203"></a> 203 std::shared_ptr&lt;core::CommunicationManager&gt; communication_manager_ptr_;

<a id="l00204" name="l00204"></a> 204 std::unique_ptr&lt;scheduling::ISchedulerClient&gt; scheduler_client_ptr_;

<a id="l00205" name="l00205"></a> 205 std::chrono::milliseconds timeout_;

<a id="l00206" name="l00206"></a> 206 bool is_init_step_finished_{false};

<a id="l00207" name="l00207"></a> 207};



<a id="l00208" name="l00208"></a> 208 

<a id="l00209" name="l00209"></a> 209} // namespace lifecycle

<a id="l00210" name="l00210"></a> 210} // namespace core

<a id="l00211" name="l00211"></a> 211} // namespace simulation\_framework

[simulation\_framework::core::Topic](classsimulation__framework_1_1core_1_1Topic.xhtml)

This is the concrete Topic class that can be used for creation of a communication channel with given ...

**Definition** [topic.h:38](topic_8h_source.xhtml#l00037)



[simulation\_framework::core::lifecycle::BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml)

This is the basic implementation of IActivity interface. Inheriting classes, i.e. a concrete simulati...

**Definition** [base\_activity.h:78](base__activity_8h_source.xhtml#l00077)



[simulation\_framework::core::lifecycle::BaseActivity::GetName](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a11d72f1e983f825e5d812224aa43c432)

std::string GetName() const override



[simulation\_framework::core::lifecycle::BaseActivity::GetCurrentTimestamp](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a2cfe6105cb8e660b2757e602d4fc1a87)

time::Timestamp GetCurrentTimestamp() const final



[simulation\_framework::core::lifecycle::BaseActivity::GetCycleTime](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a2dcf170a633dad7ea1238489c6f9237c)

std::chrono::milliseconds GetCycleTime() const final



[simulation\_framework::core::lifecycle::BaseActivity::SetUpCommunication](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a3355c18c8d6519f9649ec7de4274e645)

void SetUpCommunication() final



[simulation\_framework::core::lifecycle::BaseActivity::AddPublisher](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a33e63ce3d3f544b5bfef0e8955b81a81)

void AddPublisher(const core::TopicId &amp;topic_id, typename Topic::PublisherCallback callback)



[simulation\_framework::core::lifecycle::BaseActivity::Step](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a45bf4108dc4b3b77b4ca997b824ea07f)

void Step() final



[simulation\_framework::core::lifecycle::BaseActivity::BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a4ccbf97b81ac7b2a43ceef2c151138e1)

BaseActivity(const std::string &amp;activity_name, const Topics &amp;topics)



[simulation\_framework::core::lifecycle::BaseActivity::BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a650b1e86ca7059ad464709ca0d06347f)

BaseActivity(const std::string &amp;activity_name, std::shared_ptr&lt; core::CommunicationManager &gt; communication_manager_ptr, std::unique_ptr&lt; scheduling::ISchedulerClient &gt; scheduler_client, std::chrono::milliseconds timeout)



[simulation\_framework::core::lifecycle::BaseActivity::AddSubscriber](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a680815941f7e02b42000251dc70e798b)

void AddSubscriber(const core::TopicId &amp;topic_id, typename Topic::SubscriberMessageCallback callback)



[simulation\_framework::core::lifecycle::BaseActivity::Init](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a6dc728a30f6235e11a95020eb6511a99)

virtual void Init()

**Definition** [base\_activity.h:168](base__activity_8h_source.xhtml#l00168)



[simulation\_framework::core::lifecycle::BaseActivity::GetInputFiles](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a7ff6275fd280b049d2fb985212459c8b)

std::vector&lt; File &gt; GetInputFiles() const final



[simulation\_framework::core::lifecycle::BaseActivity::BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a8a0d6519c43db4cd308cbe2e62af2810)

BaseActivity(const std::string &amp;activity_name, const Topics &amp;topics, std::chrono::milliseconds timeout)



[simulation\_framework::core::lifecycle::BaseActivity::BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a95dfde5a91f76076db6bc011995dcee1)

BaseActivity(const std::string &amp;activity_name, std::shared_ptr&lt; core::CommunicationManager &gt; communication_manager_ptr, std::unique_ptr&lt; scheduling::ISchedulerClient &gt; scheduler_client)



[simulation\_framework::core::lifecycle::BaseActivity::~BaseActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aa52831f008141d199920090685f078fd)

virtual ~BaseActivity()



[simulation\_framework::core::lifecycle::BaseActivity::AddPublisherAndSubscriber](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aa898aa5e721f110f678994731a05aa6e)

virtual void AddPublisherAndSubscriber()=0



[simulation\_framework::core::lifecycle::BaseActivity::ExecuteStep](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aaf5d84e0430a2703b697eb867e8bf303)

virtual void ExecuteStep()=0



[simulation\_framework::core::lifecycle::BaseActivity::Shutdown](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#ac0a680a9bd6db9111ba085d641a16126)

void Shutdown() final



[simulation\_framework::core::lifecycle::BaseActivity::GetSimulationOutputDirectory](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aeca0631080d2751212ad8958d16860e9)

std::string GetSimulationOutputDirectory() const final



[simulation\_framework::core::lifecycle::IActivity](classsimulation__framework_1_1core_1_1lifecycle_1_1IActivity.xhtml)

Interface for simulation activities.

**Definition** [i\_activity.h:30](i__activity_8h_source.xhtml#l00029)



[core](namespacecore.xhtml)

The namespace for all core functionalities under namespace simulation_framework.



[simulation\_framework](namespacesimulation__framework.xhtml)

The top namespace for simulation framework.



[time](namespacetime.xhtml)

The namespace for simulation time related implementation under namespace simulation_framework::core.