    

 ## On this page

  

 

 # base\_activity

 Last update: 12.07.2024 

<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 [Init](classsimulation__framework_1_1core_1_1lifecycle_1_1BaseActivity.xhtml#aadc85940a2653f656639ee27a2faf545)() 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="l00123"></a> 123 protected:

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

<a name="l00128"></a> 128 

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

<a name="l00133"></a> 133 

<a name="l00139"></a> 139 template &lt;typename Topic&gt;

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

<a name="l00141"></a> 141 

<a name="l00147"></a> 147 template &lt;typename Topic&gt;

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

<a name="l00149"></a> 149 

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

<a name="l00155"></a> 155 

<a name="l00156"></a> 156 private:

<a name="l00161"></a> 161 bool WaitForPubSubConnection() override final;

<a name="l00162"></a> 162 

<a name="l00163"></a> 163 std::string name_;

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

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

<a name="l00166"></a> 166 std::chrono::milliseconds timeout_;

<a name="l00167"></a> 167 };

<a name="l00168"></a> 168 

<a name="l00169"></a> 169 } // namespace lifecycle

<a name="l00170"></a> 170 } // namespace core

<a name="l00171"></a> 171 } // namespace simulation\_framework