9 #include "../core/core-data.hpp"
10 #include "Federate.hpp"
12 #include "Publications.hpp"
14 #include "data_view.hpp"
23 class ValueFederateManager;
44 const std::shared_ptr<Core>& core,
67 ValueFederate(
const std::string& fedName,
const std::string& configString);
98 Publication& registerPublication(
const std::string& name,
99 const std::string& type,
100 const std::string& units = std::string());
109 const std::string& units = std::string())
121 Publication& registerGlobalPublication(
const std::string& name,
122 const std::string& type,
123 const std::string& units = std::string());
132 const std::string& units = std::string())
148 const std::string& units = std::string())
150 return registerGlobalPublication<X>(name +
'_' + std::to_string(index1), units);
165 const std::string& units = std::string())
167 return registerGlobalPublication<X>(name +
'_' + std::to_string(index1) +
'_' +
168 std::to_string(index2),
178 Input& registerInput(
const std::string& name,
179 const std::string& type,
180 const std::string& units = std::string());
189 Input& registerGlobalInput(
const std::string& name,
190 const std::string& type,
191 const std::string& units = std::string());
217 const std::string& units = std::string())
219 return registerGlobalInput<X>(name +
'_' + std::to_string(index1), units);
235 const std::string& units = std::string())
237 return registerGlobalInput<X>(name +
'_' + std::to_string(index1) +
'_' +
238 std::to_string(index2),
246 Input& registerSubscription(
const std::string& target,
247 const std::string& units = std::string());
257 const std::string& units = std::string())
259 return registerSubscription(target +
'_' + std::to_string(index1), units);
272 const std::string& units = std::string())
274 return registerSubscription(target +
'_' + std::to_string(index1) +
'_' +
275 std::to_string(index2),
285 void addAlias(
const Input& inp,
const std::string& shortcutName);
293 void addAlias(
const Publication& pub,
const std::string& shortcutName);
295 virtual void setFlagOption(
int flag,
bool flagValue =
true)
override;
311 virtual void registerInterfaces(
const std::string& configString)
override;
319 void registerValueInterfaces(
const std::string& configString);
323 void registerValueInterfacesJson(
const std::string& jsonString);
325 void registerValueInterfacesToml(
const std::string& tomlString);
340 bool forceCoreUpdate(
Input& inp);
357 publishBytes(pub,
data_view{data, data_size});
363 void registerFromPublicationJSON(
const std::string& jsonString);
368 void publishJSON(
const std::string& jsonString);
374 void addTarget(
const Publication& pub,
const std::string& target);
379 void addTarget(
const Input& inp,
const std::string& target);
384 void removeTarget(
const Publication& pub,
const std::string& target);
389 void removeTarget(
const Input& inp,
const std::string& target);
398 template<
class iType>
401 addTarget(iObject, target +
'_' + std::to_string(index1));
411 template<
class iType>
412 void addIndexedTarget(
const iType& iObject,
const std::string& target,
int index1,
int index2)
414 addTarget(iObject, target +
'_' + std::to_string(index1) +
'_' + std::to_string(index2));
419 bool isUpdated(
const Input& inp)
const;
421 Time getLastUpdateTime(
const Input& inp)
const;
423 virtual void disconnect()
override;
429 void clearUpdate(
const Input& inp);
432 virtual void updateTime(
Time newTime,
Time oldTime)
override;
433 virtual void startupToInitializeStateTransition()
override;
434 virtual void initializeToExecuteStateTransition(
IterationResult result)
override;
435 virtual std::string localQuery(
const std::string& queryStr)
const override;
441 std::vector<int> queryUpdates();
445 const std::string& getTarget(
const Input& inp)
const;
449 const Input& getInput(
const std::string& name)
const;
453 Input& getInput(
const std::string& name);
457 const Input& getInput(
int index)
const;
461 Input& getInput(
int index);
465 const Input& getInput(
const std::string& name,
int index1)
const;
469 const Input& getInput(
const std::string& name,
int index1,
int index2)
const;
474 const Input& getSubscription(
const std::string& target)
const;
480 Input& getSubscription(
const std::string& target);
486 Publication& getPublication(
const std::string& name);
491 const Publication& getPublication(
const std::string& name)
const;
500 const Publication& getPublication(
int index)
const;
506 const Publication& getPublication(
const std::string& name,
int index1)
const;
512 const Publication& getPublication(
const std::string& name,
int index1,
int index2)
const;
518 void setInputNotificationCallback(std::function<
void(
Input&,
Time)> callback);
523 void setInputNotificationCallback(
Input& inp, std::function<
void(
Input&,
Time)> callback);
526 int getPublicationCount()
const;
528 int getInputCount()
const;
532 std::unique_ptr<ValueFederateManager> vfManager;
543 template<
class... Us>