helics  3.5.2
cpp98/Federate.hpp
1 /*
2 Copyright (c) 2017-2024,
3 Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable
4 Energy, LLC. See the top-level NOTICE for additional details. All rights reserved.
5 SPDX-License-Identifier: BSD-3-Clause
6 */
7 #ifndef HELICS_CPP98_FEDERATE_HPP_
8 #define HELICS_CPP98_FEDERATE_HPP_
9 #pragma once
10 
11 #include "Filter.hpp"
12 #include "Translator.hpp"
13 #include "config.hpp"
14 #include "helics/helics.h"
15 #include "helicsExceptions.hpp"
16 
17 #include <complex>
18 #include <string>
19 #include <vector>
20 
21 #if defined(HELICS_HAS_FUNCTIONAL) && HELICS_HAS_FUNCTIONAL != 0
22 # include <functional>
23 # include <utility>
24 #endif
25 
26 namespace helicscpp {
28 class FederateInfo {
29  public:
34  explicit FederateInfo(const std::string& coretype)
35  {
38  }
41  explicit FederateInfo(int coretype)
42  {
45  }
47  FederateInfo(const FederateInfo& fedInfo)
48  {
49  fi = helicsFederateClone(fedInfo.fi, hThrowOnError());
50  }
53  {
56  fi = fi_new;
57  return *this;
58  }
59 #ifdef HELICS_HAS_RVALUE_REFS
61  FederateInfo(FederateInfo&& fedInfo) HELICS_NOTHROW
62  {
63  fi = fedInfo.fi;
64  fedInfo.fi = HELICS_NULL_POINTER;
65  }
67  FederateInfo& operator=(FederateInfo&& fedInfo) HELICS_NOTHROW
68  {
70  fi = fedInfo.fi;
71  fedInfo.fi = HELICS_NULL_POINTER;
72  return *this;
73  }
74 #endif
77  void loadFromArgs(const std::string& argString)
78  {
79  helicsFederateInfoLoadFromString(fi, argString.c_str(), HELICS_NULL_POINTER);
80  }
83  void setCoreName(const std::string& corename)
84  {
85  helicsFederateInfoSetCoreName(fi, corename.c_str(), HELICS_NULL_POINTER);
86  }
88  void setSeparator(char sep) { helicsFederateInfoSetSeparator(fi, sep, HELICS_NULL_POINTER); }
91  void setCoreInit(const std::string& coreInit)
92  {
93  helicsFederateInfoSetCoreInitString(fi, coreInit.c_str(), HELICS_NULL_POINTER);
94  }
96  void setBrokerInit(const std::string& brokerInit)
97  {
98  helicsFederateInfoSetBrokerInitString(fi, brokerInit.c_str(), HELICS_IGNORE_ERROR);
99  }
103  void setCoreType(const std::string& coretype)
104  {
106  }
110  void setCoreType(int coretype)
111  {
112  helicsFederateInfoSetCoreType(fi, coretype, HELICS_NULL_POINTER);
113  }
117  void setBroker(const std::string& broker)
118  {
119  helicsFederateInfoSetBroker(fi, broker.c_str(), HELICS_NULL_POINTER);
120  }
124  void setBrokerKey(const std::string& brokerkey)
125  {
126  helicsFederateInfoSetBrokerKey(fi, brokerkey.c_str(), HELICS_NULL_POINTER);
127  }
132  void setFlagOption(int flag, bool value = true)
133  {
135  flag,
136  value ? HELICS_TRUE : HELICS_FALSE,
137  HELICS_NULL_POINTER);
138  }
143  void setProperty(int timeProperty, HelicsTime timeValue)
144  {
145  helicsFederateInfoSetTimeProperty(fi, timeProperty, timeValue, HELICS_NULL_POINTER);
146  }
151  void setProperty(int integerProperty, int propertyValue)
152  {
154  integerProperty,
155  propertyValue,
156  HELICS_NULL_POINTER);
157  }
158 
160  HelicsFederateInfo getInfo() { return fi; }
161 
162  private:
163  HelicsFederateInfo fi;
164 };
165 
166 #if defined(HELICS_HAS_FUNCTIONAL) && HELICS_HAS_FUNCTIONAL != 0
167 namespace details {
169  inline void helicCppQueryCallbackExecutor(const char* query,
170  int stringSize,
171  HelicsQueryBuffer buffer,
172  void* userData)
173  {
174  auto cback = reinterpret_cast<std::function<std::string(const std::string&)>*>(userData);
175  std::string val(query, stringSize);
176  std::string result = (*cback)(val);
177  helicsQueryBufferFill(buffer, result.c_str(), static_cast<int>(result.size()), nullptr);
178  }
179 
181  inline void
182  helicCppTimeUpdateCallbackExecutor(HelicsTime time, HelicsBool iterating, void* userData)
183  {
184  auto cback = reinterpret_cast<std::function<void(HelicsTime, bool)>*>(userData);
185  (*cback)(time, iterating == HELICS_TRUE);
186  }
187 
189  inline void helicCppStateChangeCallbackExecutor(HelicsFederateState newState,
190  HelicsFederateState oldState,
191  void* userData)
192  {
193  auto cback =
194  reinterpret_cast<std::function<void(HelicsFederateState, HelicsFederateState)>*>(
195  userData);
196  (*cback)(newState, oldState);
197  }
198 
200  inline void helicCppTimeRequestEntryCallbackExecutor(HelicsTime currentTime,
201  HelicsTime requestTime,
202  HelicsBool iterating,
203  void* userData)
204  {
205  auto cback = reinterpret_cast<std::function<void(HelicsTime, HelicsTime, bool)>*>(userData);
206  (*cback)(currentTime, requestTime, iterating == HELICS_TRUE);
207  }
209  inline void helicCppTimeRequestReturnCallbackExecutor(HelicsTime newTime,
210  HelicsBool iterating,
211  void* userData)
212  {
213  auto cback = reinterpret_cast<std::function<void(HelicsTime, bool)>*>(userData);
214  (*cback)(newTime, iterating == HELICS_TRUE);
215  }
216 } // namespace details
217 #endif
218 
220 typedef struct HelicsIterationTime {
224 
226 class Federate {
227  public:
229  Federate() HELICS_NOTHROW: fed(NULL), exec_async_iterate(false) {}
232  {
234  }
236  Federate& operator=(const Federate& fedObj)
237  {
240  return *this;
241  }
242 #ifdef HELICS_HAS_RVALUE_REFS
244  Federate(Federate&& fedObj) HELICS_NOTHROW:
245  fed(fedObj.fed),
246  exec_async_iterate(fedObj.exec_async_iterate)
247  {
248  fedObj.fed = HELICS_NULL_POINTER;
249  }
251  Federate& operator=(Federate&& fedObj) HELICS_NOTHROW
252  {
253  exec_async_iterate = fedObj.exec_async_iterate;
254  fed = fedObj.fed;
255  fedObj.fed = HELICS_NULL_POINTER;
256  return *this;
257  }
258 #endif
260  virtual ~Federate()
261  {
262  if (fed != HELICS_NULL_POINTER) {
264  }
265 #if defined(HELICS_HAS_FUNCTIONAL) && HELICS_HAS_FUNCTIONAL != 0
266  freeCallbacks();
267 #endif
268  }
270  operator HelicsFederate() const { return fed; }
272  HelicsFederate baseObject() const { return fed; }
277  void setFlagOption(int flag, bool flagValue = true)
278  {
280  flag,
281  flagValue ? HELICS_TRUE : HELICS_FALSE,
282  hThrowOnError());
283  }
288  void setProperty(int tProperty, HelicsTime timeValue)
289  {
290  helicsFederateSetTimeProperty(fed, tProperty, timeValue, hThrowOnError());
291  }
296  void setProperty(int intProperty, int value)
297  {
298  helicsFederateSetIntegerProperty(fed, intProperty, value, hThrowOnError());
299  }
300 
304  bool getFlagOption(int flag) const
305  {
307  }
311  HelicsTime getTimeProperty(int tProperty) const
312  {
313  return helicsFederateGetTimeProperty(fed, tProperty, hThrowOnError());
314  }
318  int getIntegerProperty(int intProperty) const
319  {
320  return helicsFederateGetIntegerProperty(fed, intProperty, hThrowOnError());
321  }
329  void setSeparator(char sep) { helicsFederateSetSeparator(fed, sep, HELICS_NULL_POINTER); }
335  void registerInterfaces(const std::string& configString)
336  {
337  helicsFederateRegisterInterfaces(fed, configString.c_str(), hThrowOnError());
338  }
341  {
342  return helicsFederateGetState(fed, HELICS_NULL_POINTER);
343  }
349  {
350  // returns int, 1 = true, 0 = false
351  return helicsFederateIsAsyncOperationCompleted(fed, HELICS_NULL_POINTER) != HELICS_FALSE;
352  }
362  {
364  }
365 
370  {
372  }
373 
380  {
382  }
388  {
390  }
391 
396  {
398  }
399 
406  {
408  if (iterate == HELICS_ITERATION_REQUEST_NO_ITERATION) {
410  } else {
412  }
413  return out_iterate;
414  }
422  {
423  if (iterate == HELICS_ITERATION_REQUEST_NO_ITERATION) {
425  exec_async_iterate = false;
426  } else {
428  exec_async_iterate = true;
429  }
430  }
431 
437  {
439  if (exec_async_iterate) {
441  } else {
443  }
444  return out_iterate;
445  }
461  {
463  }
467 
472  {
473  return helicsFederateRequestTimeAdvance(fed, timeDelta, hThrowOnError());
474  }
480  {
481  HelicsIterationTime itTime;
483  fed, time, iterate, &(itTime.status), hThrowOnError());
484  return itTime;
485  }
491  {
493  }
494 
502  {
504  }
505 
509  {
511  }
512 
517  {
518  HelicsIterationTime itTime;
519  itTime.grantedTime =
521  return itTime;
522  }
523 
524  void processCommunication(HelicsTime period)
525  {
526  helicsFederateProcessCommunications(fed, period, HELICS_IGNORE_ERROR);
527  }
529  const char* getName() const { return helicsFederateGetName(fed); }
530 
532  void protect() { helicsFederateProtect(helicsFederateGetName(fed), HELICS_IGNORE_ERROR); }
533 
535  void unProtect() { helicsFederateUnProtect(helicsFederateGetName(fed), HELICS_IGNORE_ERROR); }
536 
550  std::string query(const std::string& target,
551  const std::string& queryStr,
553  {
554  // returns HelicsQuery
555  HelicsQuery q = helicsCreateQuery(target.c_str(), queryStr.c_str());
556  if (mode != HELICS_SEQUENCING_MODE_FAST) {
557  helicsQuerySetOrdering(q, mode, HELICS_IGNORE_ERROR);
558  }
559  std::string result(helicsQueryExecute(q, fed, hThrowOnError()));
560  helicsQueryFree(q);
561  return result;
562  }
563 
577  std::string query(const std::string& queryStr,
579  {
580  // returns HelicsQuery
581  HelicsQuery q = helicsCreateQuery(HELICS_NULL_POINTER, queryStr.c_str());
582  if (mode != HELICS_SEQUENCING_MODE_FAST) {
583  helicsQuerySetOrdering(q, mode, HELICS_IGNORE_ERROR);
584  }
585  std::string result(helicsQueryExecute(q, fed, hThrowOnError()));
586  helicsQueryFree(q);
587  return result;
588  }
589 
597  void sendCommand(const std::string& target, const std::string& cmd)
598  {
599  helicsFederateSendCommand(fed, target.c_str(), cmd.c_str(), HELICS_IGNORE_ERROR);
600  }
601 
608  const char* getCommand() { return helicsFederateGetCommand(fed, HELICS_IGNORE_ERROR); }
609 
616  const char* waitCommand() { return helicsFederateWaitCommand(fed, HELICS_IGNORE_ERROR); }
617 
624  const char* getCommandSource()
625  {
626  return helicsFederateGetCommandSource(fed, HELICS_IGNORE_ERROR);
627  }
628 
629  void setQueryCallback(
630  void (*queryAnswer)(const char* query, int querySize, HelicsQueryBuffer, void* userdata),
631  void* userdata)
632 
633  {
634  helicsFederateSetQueryCallback(fed, queryAnswer, userdata, hThrowOnError());
635  }
636 
637  void setTimeRequestEntryCallback(void (*timeRequestEntry)(HelicsTime currentTime,
639  HelicsBool iterating,
640  void* userdata),
641  void* userdata)
642 
643  {
644  helicsFederateSetTimeRequestEntryCallback(fed, timeRequestEntry, userdata, hThrowOnError());
645  }
646 
647  void setTimeUpdateCallback(void (*timeUpdate)(HelicsTime time,
648  HelicsBool iterating,
649  void* userdata),
650  void* userdata)
651 
652  {
653  helicsFederateSetTimeUpdateCallback(fed, timeUpdate, userdata, hThrowOnError());
654  }
655 
656  void setStateChangeCallback(void (*stateChange)(HelicsFederateState newState,
657  HelicsFederateState oldState,
658  void* userdata),
659  void* userdata)
660 
661  {
662  helicsFederateSetStateChangeCallback(fed, stateChange, userdata, hThrowOnError());
663  }
664 
665  void setTimeRequestReturnCallback(void (*timeRequestReturn)(HelicsTime newTime,
666  HelicsBool iterating,
667  void* userdata),
668  void* userdata)
669 
670  {
672  timeRequestReturn,
673  userdata,
674  hThrowOnError());
675  }
676 #if defined(HELICS_HAS_FUNCTIONAL) && HELICS_HAS_FUNCTIONAL != 0
677  void setQueryCallback(std::function<std::string(const std::string&)> callback)
678 
679  {
680  checkCallbackAllocation();
681  callbackBuffers[queryCallbackLocation] =
682  new std::function<std::string(const std::string&)>(std::move(callback));
684  details::helicCppQueryCallbackExecutor,
685  callbackBuffers[queryCallbackLocation],
686  hThrowOnError());
687  }
688 
689  void setTimeRequestEntryCallback(
690  std::function<void(HelicsTime currentTime, HelicsTime requestTime, bool iterating)>
691  callback)
692 
693  {
694  checkCallbackAllocation();
695  callbackBuffers[timeRequestEntryCallbackLocation] =
696  new std::function<void(HelicsTime, HelicsTime, bool)>(std::move(callback));
698  details::helicCppTimeRequestEntryCallbackExecutor,
699  callbackBuffers[timeRequestEntryCallbackLocation],
700  hThrowOnError());
701  }
702 
703  void setTimeUpdateCallback(std::function<void(HelicsTime time, bool iterating)> callback)
704 
705  {
706  checkCallbackAllocation();
707  callbackBuffers[timeUpdateCallbackLocation] =
708  new std::function<void(HelicsTime time, bool iterating)>(std::move(callback));
710  details::helicCppTimeUpdateCallbackExecutor,
711  callbackBuffers[timeUpdateCallbackLocation],
712  hThrowOnError());
713  }
714 
715  void setStateChangeCallback(
716  std::function<void(HelicsFederateState, HelicsFederateState)> callback)
717 
718  {
719  checkCallbackAllocation();
720  callbackBuffers[stateChangeCallbackLocation] =
721  new std::function<void(HelicsFederateState, HelicsFederateState)>(std::move(callback));
723  details::helicCppStateChangeCallbackExecutor,
724  callbackBuffers[stateChangeCallbackLocation],
725  hThrowOnError());
726  }
727 
728  void setTimeRequestReturnCallback(
729  std::function<void(HelicsTime newTime, bool iterating)> callback)
730 
731  {
732  checkCallbackAllocation();
733  callbackBuffers[timeRequestReturnCallbackLocation] =
734  new std::function<void(HelicsTime, bool)>(std::move(callback));
736  fed,
737  details::helicCppTimeRequestReturnCallbackExecutor,
738  callbackBuffers[timeRequestReturnCallbackLocation],
739  hThrowOnError());
740  }
741 #endif
747  Filter registerFilter(HelicsFilterTypes type, const std::string& filterName = std::string())
748  {
749  return Filter(helicsFederateRegisterFilter(fed, type, filterName.c_str(), hThrowOnError()));
750  }
751 
758  CloningFilter registerCloningFilter(const std::string& deliveryEndpoint)
759  {
760  return CloningFilter(
761  helicsFederateRegisterCloningFilter(fed, deliveryEndpoint.c_str(), hThrowOnError()));
762  }
769  const std::string& filterName = std::string())
770  {
771  return Filter(
772  helicsFederateRegisterGlobalFilter(fed, type, filterName.c_str(), hThrowOnError()));
773  }
774 
781  CloningFilter registerGlobalCloningFilter(const std::string& deliveryEndpoint)
782  {
784  deliveryEndpoint.c_str(),
785  hThrowOnError()));
786  }
792  Filter getFilter(const std::string& filterName)
793  {
794  return Filter(helicsFederateGetFilter(fed, filterName.c_str(), hThrowOnError()));
795  }
799  Filter getFilter(int index)
800  {
802  }
803 
809  void setGlobal(const std::string& valueName, const std::string& value)
810  {
811  helicsFederateSetGlobal(fed, valueName.c_str(), value.c_str(), hThrowOnError());
812  }
813 
818  void addAlias(const std::string& interfaceName, const std::string& alias)
819  {
820  helicsFederateAddAlias(fed, interfaceName.c_str(), alias.c_str(), hThrowOnError());
821  }
822 
828  void setTag(const std::string& tag, const std::string& value)
829  {
830  helicsFederateSetTag(fed, tag.c_str(), value.c_str(), hThrowOnError());
831  }
838  const char* getTag(const std::string& tag) const
839  {
840  return helicsFederateGetTag(fed, tag.c_str(), hThrowOnError());
841  }
842 
847  void addDependency(const std::string& fedName)
848  {
849  helicsFederateAddDependency(fed, fedName.c_str(), hThrowOnError());
850  }
851 
856  void localError(int errorCode, const std::string& errorString)
857  {
858  helicsFederateLocalError(fed, errorCode, errorString.c_str(), hThrowOnError());
859  }
860 
865  void globalError(int errorCode, const std::string& errorString)
866  {
867  helicsFederateGlobalError(fed, errorCode, errorString.c_str(), hThrowOnError());
868  }
869 
871  void logErrorMessage(const std::string& message)
872  {
873  helicsFederateLogErrorMessage(fed, message.c_str(), hThrowOnError());
874  }
876  void logWarningMessage(const std::string& message)
877  {
879  }
881  void logInfoMessage(const std::string& message)
882  {
883  helicsFederateLogInfoMessage(fed, message.c_str(), hThrowOnError());
884  }
886  void logDebugMessage(const std::string& message)
887  {
888  helicsFederateLogDebugMessage(fed, message.c_str(), hThrowOnError());
889  }
891  void logMessage(int level, const std::string& message)
892  {
893  helicsFederateLogLevelMessage(fed, level, message.c_str(), hThrowOnError());
894  }
898  HelicsFederate getObject() const { return fed; }
899 
900  protected:
903 #if defined(HELICS_HAS_FUNCTIONAL) && HELICS_HAS_FUNCTIONAL != 0
904  private:
905  static constexpr int numberOfCallbacks = 5;
906  static constexpr int timeRequestEntryCallbackLocation = 0;
907  static constexpr int timeUpdateCallbackLocation = 1;
908  static constexpr int stateChangeCallbackLocation = 2;
909  static constexpr int queryCallbackLocation = 3;
910  static constexpr int timeRequestReturnCallbackLocation = 4;
911  void** callbackBuffers{nullptr};
912 
913  void checkCallbackAllocation()
914  {
915  if (callbackBuffers == nullptr) {
916  callbackBuffers = new void*[numberOfCallbacks];
917  for (int ii = 0; ii < numberOfCallbacks; ++ii) {
918  callbackBuffers[ii] = nullptr;
919  }
920  }
921  }
922  void freeCallbacks()
923  {
924  if (callbackBuffers == nullptr) {
925  return;
926  }
927  if (callbackBuffers[queryCallbackLocation] != nullptr) {
928  auto cback = reinterpret_cast<std::function<std::string(const std::string&)>*>(
929  callbackBuffers[queryCallbackLocation]);
930  delete cback;
931  }
932  if (callbackBuffers[timeRequestEntryCallbackLocation] != nullptr) {
933  auto cback = reinterpret_cast<std::function<void(HelicsTime, HelicsTime, bool)>*>(
934  callbackBuffers[timeRequestEntryCallbackLocation]);
935  delete cback;
936  }
937  if (callbackBuffers[timeUpdateCallbackLocation] != nullptr) {
938  auto cback = reinterpret_cast<std::function<void(HelicsTime, bool)>*>(
939  callbackBuffers[timeUpdateCallbackLocation]);
940  delete cback;
941  }
942  if (callbackBuffers[stateChangeCallbackLocation] != nullptr) {
943  auto cback =
944  reinterpret_cast<std::function<void(HelicsFederateState, HelicsFederateState)>*>(
945  callbackBuffers[stateChangeCallbackLocation]);
946  delete cback;
947  }
948  if (callbackBuffers[timeRequestReturnCallbackLocation] != nullptr) {
949  auto cback = reinterpret_cast<std::function<void(HelicsTime, bool)>*>(
950  callbackBuffers[timeRequestReturnCallbackLocation]);
951  delete cback;
952  }
953  delete[] callbackBuffers;
954  }
955 #endif
956 };
957 
958 inline void protect(const std::string& name)
959 {
960  helicsFederateProtect(name.c_str(), hThrowOnError());
961 }
962 inline void unProtect(const std::string& name)
963 {
964  helicsFederateUnProtect(name.c_str(), hThrowOnError());
965 }
966 
967 inline bool isProtected(const std::string& name)
968 {
969  return (helicsFederateIsProtected(name.c_str(), hThrowOnError()) == HELICS_TRUE) ? true : false;
970 }
971 
972 } // namespace helicscpp
973 
974 #endif
HelicsFilter helicsFederateRegisterCloningFilter(HelicsFederate fed, const char *name, HelicsError *err)
Definition: MessageFiltersExport.cpp:166
int helicsFederateGetFilterCount(HelicsFederate fed)
Definition: MessageFiltersExport.cpp:254
HelicsFilter helicsFederateRegisterGlobalCloningFilter(HelicsFederate fed, const char *name, HelicsError *err)
Definition: MessageFiltersExport.cpp:186
HelicsFilter helicsFederateGetFilterByIndex(HelicsFederate fed, int index, HelicsError *err)
Definition: MessageFiltersExport.cpp:263
HelicsFilter helicsFederateGetFilter(HelicsFederate fed, const char *name, HelicsError *err)
Definition: MessageFiltersExport.cpp:230
HelicsFilter helicsFederateRegisterGlobalFilter(HelicsFederate fed, HelicsFilterTypes type, const char *name, HelicsError *err)
Definition: MessageFiltersExport.cpp:123
HelicsFilter helicsFederateRegisterFilter(HelicsFederate fed, HelicsFilterTypes type, const char *name, HelicsError *err)
Definition: MessageFiltersExport.cpp:102
void * HelicsFederateInfo
Definition: api-data.h:71
void * HelicsCore
Definition: api-data.h:54
double HelicsTime
Definition: api-data.h:100
HelicsIterationResult
Definition: api-data.h:131
@ HELICS_ITERATION_RESULT_NEXT_STEP
Definition: api-data.h:132
int HelicsBool
Definition: api-data.h:112
void * HelicsQuery
Definition: api-data.h:77
HelicsFederateState
Definition: api-data.h:141
HelicsIterationRequest
Definition: api-data.h:120
@ HELICS_ITERATION_REQUEST_NO_ITERATION
Definition: api-data.h:121
void * HelicsFederate
Definition: api-data.h:65
const HelicsBool HELICS_FALSE
Definition: api-data.h:115
void * HelicsQueryBuffer
Definition: api-data.h:88
const HelicsBool HELICS_TRUE
Definition: api-data.h:114
Definition: Filter.hpp:112
Definition: cpp98/Federate.hpp:28
FederateInfo(int coretype)
Definition: cpp98/Federate.hpp:41
void setCoreType(int coretype)
Definition: cpp98/Federate.hpp:110
void setProperty(int integerProperty, int propertyValue)
Definition: cpp98/Federate.hpp:151
void setProperty(int timeProperty, HelicsTime timeValue)
Definition: cpp98/Federate.hpp:143
~FederateInfo()
Definition: cpp98/Federate.hpp:76
void setFlagOption(int flag, bool value=true)
Definition: cpp98/Federate.hpp:132
void setBrokerInit(const std::string &brokerInit)
Set a string for the broker initialization in command line argument format.
Definition: cpp98/Federate.hpp:96
void setBroker(const std::string &broker)
Definition: cpp98/Federate.hpp:117
FederateInfo(const std::string &coretype)
Definition: cpp98/Federate.hpp:34
void setBrokerKey(const std::string &brokerkey)
Definition: cpp98/Federate.hpp:124
void setCoreType(const std::string &coretype)
Definition: cpp98/Federate.hpp:103
FederateInfo()
Definition: cpp98/Federate.hpp:31
void setSeparator(char sep)
Set the separator character.
Definition: cpp98/Federate.hpp:88
HelicsFederateInfo getInfo()
Definition: cpp98/Federate.hpp:160
FederateInfo & operator=(const FederateInfo &fedInfo)
Definition: cpp98/Federate.hpp:52
void setCoreInit(const std::string &coreInit)
Definition: cpp98/Federate.hpp:91
FederateInfo(const FederateInfo &fedInfo)
Definition: cpp98/Federate.hpp:47
void setCoreName(const std::string &corename)
Definition: cpp98/Federate.hpp:83
Definition: cpp98/Federate.hpp:226
void enterInitializingMode()
Definition: cpp98/Federate.hpp:356
HelicsTime getCurrentTime()
Definition: cpp98/Federate.hpp:456
Filter registerGlobalFilter(HelicsFilterTypes type, const std::string &filterName=std::string())
Definition: cpp98/Federate.hpp:768
void unProtect()
Definition: cpp98/Federate.hpp:535
const char * getName() const
Definition: cpp98/Federate.hpp:529
std::string query(const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) const
Definition: cpp98/Federate.hpp:577
HelicsFederate fed
underlying HelicsFederate object
Definition: cpp98/Federate.hpp:901
HelicsTime getTimeProperty(int tProperty) const
Definition: cpp98/Federate.hpp:311
HelicsIterationResult enterExecutingModeComplete()
Definition: cpp98/Federate.hpp:436
const char * getCommand()
Definition: cpp98/Federate.hpp:608
void setProperty(int intProperty, int value)
Definition: cpp98/Federate.hpp:296
void protect()
Definition: cpp98/Federate.hpp:532
void enterInitializingModeComplete()
Definition: cpp98/Federate.hpp:369
void enterExecutingModeAsync(HelicsIterationRequest iterate=HELICS_ITERATION_REQUEST_NO_ITERATION)
Definition: cpp98/Federate.hpp:420
HelicsTime requestTimeComplete()
Definition: cpp98/Federate.hpp:508
void logWarningMessage(const std::string &message)
Definition: cpp98/Federate.hpp:876
void registerInterfaces(const std::string &configString)
Definition: cpp98/Federate.hpp:335
void localError(int errorCode, const std::string &errorString)
Definition: cpp98/Federate.hpp:856
void addAlias(const std::string &interfaceName, const std::string &alias)
Definition: cpp98/Federate.hpp:818
HelicsFederate getObject() const
Definition: cpp98/Federate.hpp:898
void enterInitializingModeIterativeAsync()
Definition: cpp98/Federate.hpp:387
HelicsIterationTime requestTimeIterativeComplete()
Definition: cpp98/Federate.hpp:516
HelicsTime requestTimeAdvance(HelicsTime timeDelta)
Definition: cpp98/Federate.hpp:471
HelicsTime requestNextStep()
Definition: cpp98/Federate.hpp:466
CloningFilter registerCloningFilter(const std::string &deliveryEndpoint)
Definition: cpp98/Federate.hpp:758
Filter getFilter(int index)
Definition: cpp98/Federate.hpp:799
bool getFlagOption(int flag) const
Definition: cpp98/Federate.hpp:304
void requestTimeAsync(HelicsTime time)
Definition: cpp98/Federate.hpp:490
HelicsFederateState getCurrentMode() const
Definition: cpp98/Federate.hpp:340
void enterInitializingModeIterativeComplete()
Definition: cpp98/Federate.hpp:395
Federate(const Federate &fedObj)
Copy constructor.
Definition: cpp98/Federate.hpp:231
bool isAsyncOperationCompleted() const
Definition: cpp98/Federate.hpp:348
Filter registerFilter(HelicsFilterTypes type, const std::string &filterName=std::string())
Definition: cpp98/Federate.hpp:747
void setProperty(int tProperty, HelicsTime timeValue)
Definition: cpp98/Federate.hpp:288
void finalize()
Definition: cpp98/Federate.hpp:449
const char * getCommandSource()
Definition: cpp98/Federate.hpp:624
int getIntegerProperty(int intProperty) const
Definition: cpp98/Federate.hpp:318
void setGlobal(const std::string &valueName, const std::string &value)
Definition: cpp98/Federate.hpp:809
int getFilterCount() const
Definition: cpp98/Federate.hpp:788
void setFlagOption(int flag, bool flagValue=true)
Definition: cpp98/Federate.hpp:277
HelicsFederate baseObject() const
Definition: cpp98/Federate.hpp:272
const char * getTag(const std::string &tag) const
Definition: cpp98/Federate.hpp:838
void setTag(const std::string &tag, const std::string &value)
Definition: cpp98/Federate.hpp:828
void logErrorMessage(const std::string &message)
Definition: cpp98/Federate.hpp:871
void logInfoMessage(const std::string &message)
Definition: cpp98/Federate.hpp:881
CloningFilter registerGlobalCloningFilter(const std::string &deliveryEndpoint)
Definition: cpp98/Federate.hpp:781
void requestTimeIterativeAsync(HelicsTime time, HelicsIterationRequest iterate)
Definition: cpp98/Federate.hpp:501
void logDebugMessage(const std::string &message)
Definition: cpp98/Federate.hpp:886
void logMessage(int level, const std::string &message)
Definition: cpp98/Federate.hpp:891
void addDependency(const std::string &fedName)
Definition: cpp98/Federate.hpp:847
bool exec_async_iterate
indicator that the federate is in an async operation
Definition: cpp98/Federate.hpp:902
void sendCommand(const std::string &target, const std::string &cmd)
Definition: cpp98/Federate.hpp:597
void enterInitializingModeAsync()
Definition: cpp98/Federate.hpp:361
void enterInitializingModeIterative()
Definition: cpp98/Federate.hpp:379
Federate & operator=(const Federate &fedObj)
Copy assignment operator.
Definition: cpp98/Federate.hpp:236
virtual ~Federate()
Definition: cpp98/Federate.hpp:260
Filter getFilter(const std::string &filterName)
Definition: cpp98/Federate.hpp:792
std::string query(const std::string &target, const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) const
Definition: cpp98/Federate.hpp:550
void globalError(int errorCode, const std::string &errorString)
Definition: cpp98/Federate.hpp:865
void setSeparator(char sep)
Definition: cpp98/Federate.hpp:329
HelicsIterationTime requestTimeIterative(HelicsTime time, HelicsIterationRequest iterate)
Definition: cpp98/Federate.hpp:479
HelicsTime requestTime(HelicsTime time)
Definition: cpp98/Federate.hpp:460
void finalizeAsync()
Definition: cpp98/Federate.hpp:452
void finalizeComplete()
Definition: cpp98/Federate.hpp:454
const char * waitCommand()
Definition: cpp98/Federate.hpp:616
HelicsIterationResult enterExecutingMode(HelicsIterationRequest iterate=HELICS_ITERATION_REQUEST_NO_ITERATION)
Definition: cpp98/Federate.hpp:405
Federate() HELICS_NOTHROW
Default constructor.
Definition: cpp98/Federate.hpp:229
HelicsCore getCore()
Definition: cpp98/Federate.hpp:896
Definition: Filter.hpp:18
Definition: helicsExceptions.hpp:38
void helicsFederateSetTimeRequestReturnCallback(HelicsFederate fed, void(*requestTimeReturn)(HelicsTime newTime, HelicsBool iterating, void *userdata), void *userdata, HelicsError *err)
Definition: FederateExport.cpp:1404
void helicsFederateSetTimeRequestEntryCallback(HelicsFederate fed, void(*requestTime)(HelicsTime currentTime, HelicsTime requestTime, HelicsBool iterating, void *userdata), void *userdata, HelicsError *err)
Definition: FederateExport.cpp:1264
void helicsFederateSetTimeUpdateCallback(HelicsFederate fed, void(*timeUpdate)(HelicsTime newTime, HelicsBool iterating, void *userdata), void *userdata, HelicsError *err)
Definition: helicsCallbacks.cpp:125
void helicsFederateSetStateChangeCallback(HelicsFederate fed, void(*stateChange)(HelicsFederateState newState, HelicsFederateState oldState, void *userdata), void *userdata, HelicsError *err)
Definition: FederateExport.cpp:1290
void helicsFederateSetQueryCallback(HelicsFederate fed, void(*queryAnswer)(const char *query, int querySize, HelicsQueryBuffer buffer, void *userdata), void *userdata, HelicsError *err)
Definition: helicsCallbacks.cpp:98
void helicsQueryBufferFill(HelicsQueryBuffer buffer, const char *queryResult, int strSize, HelicsError *err)
Definition: helicsCallbacks.cpp:149
void helicsFederateAddAlias(HelicsFederate fed, const char *interfaceName, const char *alias, HelicsError *err)
Definition: FederateExport.cpp:1652
void helicsFederateEnterInitializingModeIterative(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:924
HelicsTime helicsFederateRequestTimeIterativeComplete(HelicsFederate fed, HelicsIterationResult *outIterate, HelicsError *err)
Definition: FederateExport.cpp:1209
HelicsBool helicsFederateIsProtected(const char *fedName, HelicsError *err)
Definition: FederateExport.cpp:714
void helicsFederateSetGlobal(HelicsFederate fed, const char *valueName, const char *value, HelicsError *err)
Definition: FederateExport.cpp:1629
void helicsFederateEnterInitializingModeIterativeAsync(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:938
HelicsIterationResult helicsFederateEnterExecutingModeIterativeComplete(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:1072
const char * helicsFederateWaitCommand(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:1829
const char * helicsFederateGetCommand(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:1804
HelicsCore helicsFederateGetCore(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:737
void helicsFederateLogInfoMessage(HelicsFederate fed, const char *logmessage, HelicsError *err)
Definition: FederateExport.cpp:1776
void helicsFederateRequestTimeIterativeAsync(HelicsFederate fed, HelicsTime requestTime, HelicsIterationRequest iterate, HelicsError *err)
Definition: FederateExport.cpp:1195
const char * helicsFederateGetTag(HelicsFederate fed, const char *tagName, HelicsError *err)
Definition: FederateExport.cpp:1697
void helicsFederateEnterExecutingModeComplete(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:1059
void helicsFederateSetIntegerProperty(HelicsFederate fed, int intProperty, int propertyVal, HelicsError *err)
Definition: FederateExport.cpp:1539
void helicsFederateSetTag(HelicsFederate fed, const char *tagName, const char *value, HelicsError *err)
Definition: FederateExport.cpp:1677
void helicsFederateEnterInitializingModeIterativeComplete(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:952
void helicsFederateLogWarningMessage(HelicsFederate fed, const char *logmessage, HelicsError *err)
Definition: FederateExport.cpp:1771
void helicsFederateInfoLoadFromString(HelicsFederateInfo fedInfo, const char *args, HelicsError *err)
Definition: FederateExport.cpp:235
HelicsFederate helicsFederateClone(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:641
void helicsFederateInfoSetSeparator(HelicsFederateInfo fedInfo, char separator, HelicsError *err)
Definition: FederateExport.cpp:439
void helicsFederateAddDependency(HelicsFederate fed, const char *fedName, HelicsError *err)
Definition: FederateExport.cpp:1720
HelicsTime helicsFederateGetCurrentTime(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:1618
void helicsFederateFinalize(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:803
HelicsFederateInfo helicsCreateFederateInfo(void)
Definition: FederateExport.cpp:169
HelicsTime helicsFederateRequestTimeAdvance(HelicsFederate fed, HelicsTime timeDelta, HelicsError *err)
Definition: FederateExport.cpp:1104
void helicsFederateInfoFree(HelicsFederateInfo fedInfo)
Definition: FederateExport.cpp:205
void helicsFederateSendCommand(HelicsFederate fed, const char *target, const char *command, HelicsError *err)
Definition: FederateExport.cpp:1795
void helicsFederateSetTimeProperty(HelicsFederate fed, int timeProperty, HelicsTime time, HelicsError *err)
Definition: FederateExport.cpp:1509
HelicsTime helicsFederateRequestTimeComplete(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:1179
void helicsFederateInfoSetFlagOption(HelicsFederateInfo fedInfo, int flag, HelicsBool value, HelicsError *err)
Definition: FederateExport.cpp:407
void helicsFederateEnterInitializingModeComplete(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:910
void helicsQuerySetOrdering(HelicsQuery query, int32_t mode, HelicsError *err)
Definition: helicsExport.cpp:1297
void helicsFederateLogErrorMessage(HelicsFederate fed, const char *logmessage, HelicsError *err)
Definition: FederateExport.cpp:1766
void helicsFederateEnterExecutingMode(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:966
HelicsTime helicsFederateRequestNextStep(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:1120
void helicsFederateUnProtect(const char *fedName, HelicsError *err)
Definition: FederateExport.cpp:699
HelicsTime helicsFederateRequestTime(HelicsFederate fed, HelicsTime requestTime, HelicsError *err)
Definition: FederateExport.cpp:1088
void helicsFederateInfoSetBrokerInitString(HelicsFederateInfo fedInfo, const char *brokerInit, HelicsError *err)
Definition: FederateExport.cpp:277
const char * helicsFederateGetCommandSource(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:1819
void helicsFederateFinalizeAsync(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:808
void helicsQueryFree(HelicsQuery query)
Definition: helicsExport.cpp:1306
void helicsFederateLocalError(HelicsFederate fed, int errorCode, const char *errorString, HelicsError *err)
Definition: FederateExport.cpp:787
int helicsFederateGetIntegerProperty(HelicsFederate fed, int intProperty, HelicsError *err)
Definition: FederateExport.cpp:1592
void helicsFederateGlobalError(HelicsFederate fed, int errorCode, const char *errorString, HelicsError *err)
Definition: FederateExport.cpp:771
void helicsFederateRegisterInterfaces(HelicsFederate fed, const char *file, HelicsError *err)
Definition: FederateExport.cpp:753
HelicsBool helicsFederateGetFlagOption(HelicsFederate fed, int flag, HelicsError *err)
Definition: FederateExport.cpp:1574
HelicsTime helicsFederateRequestTimeIterative(HelicsFederate fed, HelicsTime requestTime, HelicsIterationRequest iterate, HelicsIterationResult *outIteration, HelicsError *err)
Definition: FederateExport.cpp:1136
void helicsFederateLogDebugMessage(HelicsFederate fed, const char *logmessage, HelicsError *err)
Definition: FederateExport.cpp:1781
void helicsFederateFree(HelicsFederate fed)
Definition: helicsExport.cpp:1052
HelicsQuery helicsCreateQuery(const char *target, const char *query)
Definition: helicsExport.cpp:1120
void helicsFederateLogLevelMessage(HelicsFederate fed, int loglevel, const char *logmessage, HelicsError *err)
Definition: FederateExport.cpp:1786
HelicsIterationResult helicsFederateEnterExecutingModeIterative(HelicsFederate fed, HelicsIterationRequest iterate, HelicsError *err)
Definition: FederateExport.cpp:1015
HelicsTime helicsFederateGetTimeProperty(HelicsFederate fed, int timeProperty, HelicsError *err)
Definition: FederateExport.cpp:1555
void helicsFederateInfoSetBroker(HelicsFederateInfo fedInfo, const char *broker, HelicsError *err)
Definition: FederateExport.cpp:321
HelicsBool helicsFederateIsAsyncOperationCompleted(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:895
void helicsFederateInfoSetCoreInitString(HelicsFederateInfo fedInfo, const char *coreInit, HelicsError *err)
Definition: FederateExport.cpp:263
void helicsFederateEnterExecutingModeIterativeAsync(HelicsFederate fed, HelicsIterationRequest iterate, HelicsError *err)
Definition: FederateExport.cpp:1045
void helicsFederateSetFlagOption(HelicsFederate fed, int flag, HelicsBool flagValue, HelicsError *err)
Definition: FederateExport.cpp:1523
const char * helicsFederateGetName(HelicsFederate fed)
Definition: FederateExport.cpp:1499
void helicsFederateInfoSetCoreType(HelicsFederateInfo fedInfo, int coretype, HelicsError *err)
Definition: FederateExport.cpp:291
void helicsFederateInfoSetIntegerProperty(HelicsFederateInfo fedInfo, int intProperty, int propertyValue, HelicsError *err)
Definition: FederateExport.cpp:448
const char * helicsQueryExecute(HelicsQuery query, HelicsFederate fed, HelicsError *err)
Definition: helicsExport.cpp:1133
void helicsFederateProtect(const char *fedName, HelicsError *err)
Definition: FederateExport.cpp:688
void helicsFederateFinalizeComplete(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:813
void helicsFederateRequestTimeAsync(HelicsFederate fed, HelicsTime requestTime, HelicsError *err)
Definition: FederateExport.cpp:1165
void helicsFederateEnterInitializingModeAsync(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:881
void helicsFederateInfoSetCoreName(HelicsFederateInfo fedInfo, const char *corename, HelicsError *err)
Definition: FederateExport.cpp:249
void helicsFederateInfoSetTimeProperty(HelicsFederateInfo fedInfo, int timeProperty, HelicsTime propertyValue, HelicsError *err)
Definition: FederateExport.cpp:430
void helicsFederateInfoSetBrokerKey(HelicsFederateInfo fedInfo, const char *brokerkey, HelicsError *err)
Definition: FederateExport.cpp:335
void helicsFederateEnterInitializingMode(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:867
HelicsFederateState helicsFederateGetState(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:1253
void helicsFederateSetSeparator(HelicsFederate fed, char separator, HelicsError *err)
Definition: FederateExport.cpp:1609
void helicsFederateInfoSetCoreTypeFromString(HelicsFederateInfo fedInfo, const char *coretype, HelicsError *err)
Definition: FederateExport.cpp:300
void helicsFederateEnterExecutingModeAsync(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:1031
void helicsFederateProcessCommunications(HelicsFederate fed, HelicsTime period, HelicsError *err)
Definition: FederateExport.cpp:1234
HelicsFilterTypes
Definition: helics_enums.h:389
HelicsSequencingModes
Definition: helics_enums.h:425
@ HELICS_SEQUENCING_MODE_FAST
Definition: helics_enums.h:427
Definition: cpp98/Broker.hpp:18
struct helicscpp::HelicsIterationTime HelicsIterationTime
Definition: cpp98/Federate.hpp:220
HelicsIterationResult status
the convergence state
Definition: cpp98/Federate.hpp:222
HelicsTime grantedTime
the time of the granted step
Definition: cpp98/Federate.hpp:221