    

 ## On this page

  

 

 # base\_activity

 Last update: 16.07.2025 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<a name="l00027"></a>[ 27](namespacelifecycle.xhtml) class CommunicationManager;

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

<a name="l00034"></a> 34 namespace [lifecycle](namespacelifecycle.xhtml)

<a name="l00035"></a> 35 {

<a name="l00083"></a>[ 83](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 name="l00084"></a> 84 {

<a name="l00085"></a> 85 public:

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

<a name="l00092"></a> 92 

<a name="l00099"></a> 99 [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 name="l00100"></a> 100 

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

<a name="l00105"></a> 105 

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

<a name="l00110"></a> 110 

<a name="l00115"></a> 115 void [SetUpCommunication](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a3355c18c8d6519f9649ec7de4274e645)() final;

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

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

<a name="l00122"></a> 122 

<a name="l00126"></a> 126 void [Shutdown](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#ac0a680a9bd6db9111ba085d641a16126)() final;

<a name="l00127"></a> 127 

<a name="l00131"></a> 131 time::Timestamp [GetCurrentTimestamp](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a2cfe6105cb8e660b2757e602d4fc1a87)() const final;

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

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

<a name="l00137"></a> 137 

<a name="l00141"></a> 141 std::string [GetSimulationOutputDirectory](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aeca0631080d2751212ad8958d16860e9)() const final;

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

<a name="l00146"></a> 146 std::vector&lt;File&gt; [GetInputFiles](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#ac0cdd32da1f4e87c25f3060815d8451c)() const final;

<a name="l00147"></a> 147 

<a name="l00148"></a> 148 protected:

<a name="l00152"></a>[ 152](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a6dc728a30f6235e11a95020eb6511a99) virtual void [Init](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#a6dc728a30f6235e11a95020eb6511a99)() {}

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

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

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

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

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

<a name="l00169"></a> 169 template &lt;typename Topic&gt;

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

<a name="l00171"></a> 171 

<a name="l00177"></a> 177 template &lt;typename Topic&gt;

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

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

<a name="l00180"></a> 180 private:

<a name="l00185"></a> 185 bool WaitForPubSubConnection() override final;

<a name="l00186"></a> 186 

<a name="l00187"></a> 187 std::string name_;

<a name="l00188"></a> 188 std::shared_ptr&lt;CommunicationManager&gt; communication_manager_ptr_;

<a name="l00189"></a> 189 std::unique_ptr&lt;scheduling::ISchedulerClient&gt; scheduler_client_ptr_;

<a name="l00190"></a> 190 std::chrono::milliseconds timeout_;

<a name="l00191"></a> 191 };

<a name="l00192"></a> 192 

<a name="l00193"></a> 193 } // namespace lifecycle

<a name="l00194"></a> 194 } // namespace core

<a name="l00195"></a> 195 } // namespace simulation\_framework