Skip to main content

AVxcelerate Simulation Framework 2025 R2

base_activity

Last update: 16.07.2025
1
5
6#pragma once
7
8#include "core/communication/i_topic.h"
9#include "core/communication/topic_registry.h"
10#include "core/lifecycle/activity/i_activity.h"
11#include "core/scheduler/i_scheduler_client/i_scheduler_client.h"
12
18{
19namespace core
20{
21
22class CommunicationManager;
23
24namespace lifecycle
25{
26// clang-format off
75// clang-format on
76
77class BaseActivity : public IActivity
78{
79 public:
86 BaseActivity(const std::string& activity_name,
87 std::shared_ptr<core::CommunicationManager> communication_manager_ptr,
88 std::unique_ptr<scheduling::ISchedulerClient> scheduler_client);
89
97 BaseActivity(const std::string& activity_name,
98 std::shared_ptr<core::CommunicationManager> communication_manager_ptr,
99 std::unique_ptr<scheduling::ISchedulerClient> scheduler_client,
100 std::chrono::milliseconds timeout);
101
107 BaseActivity(const std::string& activity_name, const Topics& topics);
108
115 BaseActivity(const std::string& activity_name, const Topics& topics, std::chrono::milliseconds timeout);
116
120 virtual ~BaseActivity();
121
125 std::string GetName() const override;
126
132
137 void Step() final;
138
143
148
153
158
163
164 protected:
168 virtual void Init() {}
169
173 virtual void ExecuteStep() = 0;
174
178 virtual void AddPublisherAndSubscriber() = 0;
179
185 template <typename Topic>
186 void AddPublisher(const core::TopicId& topic_id, typename Topic::PublisherCallback callback);
192 template <typename Topic>
193 void AddSubscriber(const core::TopicId& topic_id, typename Topic::SubscriberMessageCallback callback);
194
195 private:
200 void WaitForPubSubConnection() override;
201
202 std::string name_;
203 std::shared_ptr<core::CommunicationManager> communication_manager_ptr_;
204 std::unique_ptr<scheduling::ISchedulerClient> scheduler_client_ptr_;
205 std::chrono::milliseconds timeout_;
206 bool is_init_step_finished_{false};
207};
208
209} // namespace lifecycle
210} // namespace core
211} // namespace simulation_framework
This is the concrete Topic class that can be used for creation of a communication channel with given ...
Definition topic.h:38
This is the basic implementation of IActivity interface. Inheriting classes, i.e. a concrete simulati...
time::Timestamp GetCurrentTimestamp() const final
std::chrono::milliseconds GetCycleTime() const final
void AddPublisher(const core::TopicId &topic_id, typename Topic::PublisherCallback callback)
BaseActivity(const std::string &activity_name, const Topics &topics)
BaseActivity(const std::string &activity_name, std::shared_ptr< core::CommunicationManager > communication_manager_ptr, std::unique_ptr< scheduling::ISchedulerClient > scheduler_client, std::chrono::milliseconds timeout)
void AddSubscriber(const core::TopicId &topic_id, typename Topic::SubscriberMessageCallback callback)
std::vector< File > GetInputFiles() const final
BaseActivity(const std::string &activity_name, const Topics &topics, std::chrono::milliseconds timeout)
BaseActivity(const std::string &activity_name, std::shared_ptr< core::CommunicationManager > communication_manager_ptr, std::unique_ptr< scheduling::ISchedulerClient > scheduler_client)
std::string GetSimulationOutputDirectory() const final
Interface for simulation activities.
Definition i_activity.h:30
The namespace for all core functionalities under namespace simulation_framework.
The top namespace for simulation framework.
The namespace for simulation time related implementation under namespace simulation_framework::core.

Connect with Ansys