9 #include "../core/core-data.hpp"
10 #include "Federate.hpp"
12 #include "Publications.hpp"
14 #include "data_view.hpp"
19 #include <string_view>
24 class ValueFederateManager;
45 const std::shared_ptr<Core>& core,
68 ValueFederate(std::string_view fedName,
const std::string& configString);
99 Publication& registerPublication(std::string_view name,
100 std::string_view type,
101 std::string_view units = std::string_view{});
110 std::string_view units = std::string_view{})
122 Publication& registerGlobalPublication(std::string_view name,
123 std::string_view type,
124 std::string_view units = std::string_view{});
133 std::string_view units = std::string_view{})
149 std::string_view units = std::string_view{})
151 return registerGlobalPublication<X>(std::string(name) +
'_' + std::to_string(index1),
167 std::string_view units = std::string_view{})
169 return registerGlobalPublication<X>(std::string(name) +
'_' + std::to_string(index1) +
'_' +
170 std::to_string(index2),
180 Input& registerInput(std::string_view name,
181 std::string_view type,
182 std::string_view units = std::string_view{});
191 Input& registerGlobalInput(std::string_view name,
192 std::string_view type,
193 std::string_view units = std::string_view{});
219 std::string_view units = std::string_view())
221 return registerGlobalInput<X>(std::string(name) +
'_' + std::to_string(index1), units);
237 std::string_view units = std::string_view())
239 return registerGlobalInput<X>(std::string(name) +
'_' + std::to_string(index1) +
'_' +
240 std::to_string(index2),
248 Input& registerSubscription(std::string_view target,
249 std::string_view units = std::string_view{});
259 std::string_view units = std::string_view{})
261 return registerSubscription(std::string(target) +
'_' + std::to_string(index1), units);
274 std::string_view units = std::string_view{})
276 return registerSubscription(std::string(target) +
'_' + std::to_string(index1) +
'_' +
277 std::to_string(index2),
288 void addAlias(
const Input& inp, std::string_view shortcutName);
296 void addAlias(
const Publication& pub, std::string_view shortcutName);
298 virtual void setFlagOption(
int flag,
bool flagValue =
true)
override;
306 void setDefaultValue(
const Input& inp, data_view block);
314 virtual void registerInterfaces(
const std::string& configString)
override;
322 void registerValueInterfaces(
const std::string& configString);
325 void loadFederateData();
328 void registerValueInterfacesJson(
const std::string& jsonString);
330 void registerValueInterfacesJsonDetail(Json::Value& json,
bool defaultGlobal);
332 void registerValueInterfacesToml(
const std::string& tomlString);
340 data_view getBytes(
const Input& inp);
347 bool forceCoreUpdate(Input& inp);
354 void publishBytes(
const Publication& pub, data_view block);
364 publishBytes(pub,
data_view{data, data_size});
370 void registerFromPublicationJSON(
const std::string& jsonString);
375 void publishJSON(
const std::string& jsonString);
381 void addTarget(
const Publication& pub, std::string_view target);
386 void addTarget(
const Input& inp, std::string_view target);
391 void removeTarget(
const Publication& pub, std::string_view target);
396 void removeTarget(
const Input& inp, std::string_view target);
405 template<
class iType>
408 addTarget(iObject, std::string(target) +
'_' + std::to_string(index1));
418 template<
class iType>
419 void addIndexedTarget(
const iType& iObject, std::string_view target,
int index1,
int index2)
422 std::string(target) +
'_' + std::to_string(index1) +
'_' +
423 std::to_string(index2));
428 bool isUpdated(
const Input& inp)
const;
430 Time getLastUpdateTime(
const Input& inp)
const;
432 virtual void disconnect()
override;
438 void clearUpdate(
const Input& inp);
441 virtual void updateTime(
Time newTime,
Time oldTime)
override;
442 virtual void startupToInitializeStateTransition()
override;
443 virtual void initializeToExecuteStateTransition(
iteration_time result)
override;
444 virtual std::string localQuery(std::string_view queryStr)
const override;
450 std::vector<int> queryUpdates();
454 const std::string& getTarget(
const Input& inp)
const;
458 const Input& getInput(std::string_view name)
const;
462 Input& getInput(std::string_view name);
466 const Input& getInput(
int index)
const;
470 Input& getInput(
int index);
474 const Input& getInput(std::string_view name,
int index1)
const;
478 const Input& getInput(std::string_view name,
int index1,
int index2)
const;
483 [[deprecated(
"Use getInputByTarget")]]
const Input&
486 return getInputByTarget(target);
495 return getInputByTarget(target);
501 const Input& getInputByTarget(std::string_view target)
const;
507 Input& getInputByTarget(std::string_view target);
513 Publication& getPublication(std::string_view name);
518 const Publication& getPublication(std::string_view name)
const;
527 const Publication& getPublication(
int index)
const;
533 const Publication& getPublication(std::string_view name,
int index1)
const;
539 const Publication& getPublication(std::string_view name,
int index1,
int index2)
const;
545 void setInputNotificationCallback(std::function<
void(
Input&,
Time)> callback);
550 void setInputNotificationCallback(
Input& inp, std::function<
void(
Input&,
Time)> callback);
553 int getPublicationCount()
const;
555 int getInputCount()
const;
559 std::unique_ptr<ValueFederateManager> vfManager;
570 template<
class... Us>
Definition: application_api/CoreApp.hpp:25
Definition: FederateInfo.hpp:29
Definition: application_api/Federate.hpp:48
void addAlias(std::string_view interfaceName, std::string_view alias)
Definition: Federate.cpp:1905
Definition: Publications.hpp:25
void publish(double val)
Definition: Publications.cpp:70
Definition: ValueConverter.hpp:113
Definition: application_api/ValueFederate.hpp:28
Input & registerGlobalInput(std::string_view name, std::string_view units=std::string_view{})
Definition: application_api/ValueFederate.hpp:204
Input & registerInput(std::string_view name, std::string_view units=std::string_view{})
Definition: application_api/ValueFederate.hpp:197
ValueFederate(ValueFederate &&fed) noexcept
Input & registerIndexedInput(std::string_view name, int index1, int index2, std::string_view units=std::string_view())
Definition: application_api/ValueFederate.hpp:234
void addIndexedTarget(const iType &iObject, std::string_view target, int index1)
Definition: application_api/ValueFederate.hpp:406
void addIndexedTarget(const iType &iObject, std::string_view target, int index1, int index2)
Definition: application_api/ValueFederate.hpp:419
Input & registerIndexedSubscription(std::string_view target, int index1, std::string_view units=std::string_view{})
Definition: application_api/ValueFederate.hpp:257
Publication & getPublication(std::string_view name)
Definition: ValueFederate.cpp:654
ValueFederate & operator=(const ValueFederate &fed)=delete
Input & getSubscription(std::string_view target)
Definition: application_api/ValueFederate.hpp:493
void publishBytes(const Publication &pub, const char *data, size_t data_size)
Definition: application_api/ValueFederate.hpp:362
Publication & registerIndexedPublication(std::string_view name, int index1, std::string_view units=std::string_view{})
Definition: application_api/ValueFederate.hpp:147
Input & registerIndexedInput(std::string_view name, int index1, std::string_view units=std::string_view())
Definition: application_api/ValueFederate.hpp:217
Publication & registerIndexedPublication(std::string_view name, int index1, int index2, std::string_view units=std::string_view{})
Definition: application_api/ValueFederate.hpp:164
ValueFederate(const ValueFederate &fed)=delete
Input & registerIndexedSubscription(std::string_view target, int index1, int index2, std::string_view units=std::string_view{})
Definition: application_api/ValueFederate.hpp:271
Publication & registerGlobalPublication(std::string_view name, std::string_view units=std::string_view{})
Definition: application_api/ValueFederate.hpp:132
Publication & registerPublication(std::string_view name, std::string_view units=std::string_view{})
Definition: application_api/ValueFederate.hpp:109
const Input & getSubscription(std::string_view target) const
Definition: application_api/ValueFederate.hpp:484
Definition: data_view.hpp:22
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
void publish(ValueFederate &fed, std::string_view pubName, Us... pargs)
Definition: application_api/ValueFederate.hpp:571
Definition: helicsTime.hpp:43