helics 3.7.0
Loading...
Searching...
No Matches
CallbackFederate.hpp
1/*
2Copyright (c) 2017-2026,
3Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Energy
4Innovation LLC. See the top-level NOTICE for additional details. All rights reserved.
5SPDX-License-Identifier: BSD-3-Clause
6*/
7#pragma once
8
9#include "CombinationFederate.hpp"
10
11#include <memory>
12#include <string>
13#include <utility>
14
15namespace helics {
16class CallbackFederateOperator;
17
19class HELICS_CXX_EXPORT CallbackFederate: public CombinationFederate {
20 public:
23
29 explicit CallbackFederate(std::string_view fedName, const FederateInfo& fedInfo);
30
37 CallbackFederate(std::string_view fedName,
38 const std::shared_ptr<Core>& core,
39 const FederateInfo& fedInfo = FederateInfo{});
40
47 CallbackFederate(std::string_view fedName,
48 CoreApp& core,
49 const FederateInfo& fedInfo = FederateInfo{});
50
56 CallbackFederate(std::string_view fedName, const std::string& configString);
57
62 explicit CallbackFederate(const std::string& configString);
63
71 CallbackFederate(const CallbackFederate& fed) = delete;
74 void setInitializeCallback(std::function<IterationRequest()> initializeCallback)
75 {
76 initializationOperation = std::move(initializeCallback);
77 }
78 void setNextTimeIterativeCallback(
79 std::function<std::pair<Time, IterationRequest>(iteration_time)> nextTimeCallback)
80 {
81 nextTimeOperation1 = std::move(nextTimeCallback);
82 }
83 void setNextTimeCallback(std::function<Time(Time)> nextTimeCallback)
84 {
85 nextTimeOperation2 = std::move(nextTimeCallback);
86 nextTimeOperation1 = nullptr;
87 }
88 void clearNextTimeCallback()
89 {
90 nextTimeOperation1 = nullptr;
91 nextTimeOperation2 = nullptr;
92 }
93 virtual void setFlagOption(int32_t property, bool val) override;
94
95 private:
96 void loadOperator();
97 // pointer for the
98 std::shared_ptr<CallbackFederateOperator> op;
99 friend CallbackFederateOperator;
100 bool mEventTriggered{false};
101 std::function<IterationRequest()> initializationOperation;
102 std::function<std::pair<Time, IterationRequest>(iteration_time)> nextTimeOperation1;
103 std::function<Time(Time)> nextTimeOperation2;
105 IterationRequest initializeOperationsCallback();
106
107 std::pair<Time, IterationRequest> operateCallback(iteration_time newTime);
108
109 void finalizeCallback();
110 void errorHandlerCallback(int errorCode, std::string_view errorString);
111};
112} // namespace helics
Definition CallbackFederate.hpp:19
CallbackFederate & operator=(CallbackFederate &&fed) noexcept
CallbackFederate & operator=(const CallbackFederate &fed)=delete
CallbackFederate(const CallbackFederate &fed)=delete
CallbackFederate(CallbackFederate &&fed) noexcept
Definition application_api/CombinationFederate.hpp:18
Definition application_api/CoreApp.hpp:25
Definition FederateInfo.hpp:28
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition AsyncFedCallInfo.hpp:14
IterationRequest
Definition CoreTypes.hpp:103
TimeRepresentation< count_time< 9 > > Time
Definition helicsTime.hpp:27
Definition helicsTime.hpp:46