helics  3.6.1
EmptyCore.hpp
1 /*
2 Copyright (c) 2017-2025,
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 #pragma once
8 
9 #include "Core.hpp"
10 
11 #include <memory>
12 #include <string>
13 #include <utility>
14 #include <vector>
15 
16 namespace helics {
17 
19 class EmptyCore: public Core {
20  public:
22  EmptyCore() noexcept;
23 
24  virtual ~EmptyCore();
25 
26  virtual void configure(std::string_view configureString) override;
27  virtual void configureFromArgs(int argc, char* argv[]) override;
28  virtual void configureFromVector(std::vector<std::string> args) override;
29  virtual bool isConfigured() const override;
30  virtual bool isOpenToNewFederates() const override;
31  virtual bool hasError() const override;
32  virtual void globalError(LocalFederateId federateID,
33  int errorCode,
34  std::string_view errorString) override;
35  virtual void localError(LocalFederateId federateID,
36  int errorCode,
37  std::string_view errorString) override;
38  virtual int getErrorCode() const override;
39  virtual std::string getErrorMessage() const override;
40  virtual void finalize(LocalFederateId federateID) override;
41  virtual bool enterInitializingMode(LocalFederateId federateID,
42  IterationRequest request) override;
43  virtual void setCoreReadyToInit() override;
45  IterationRequest iterate = NO_ITERATION) override;
46  virtual LocalFederateId registerFederate(std::string_view name,
47  const CoreFederateInfo& info) override;
48  virtual const std::string& getFederateName(LocalFederateId federateID) const override;
49  virtual LocalFederateId getFederateId(std::string_view name) const override;
50  virtual int32_t getFederationSize() override;
51  virtual Time timeRequest(LocalFederateId federateID, Time next) override;
53  Time next,
54  IterationRequest iterate) override;
55  virtual void processCommunications(LocalFederateId fedId,
56  std::chrono::milliseconds msToWait) override final;
57  virtual Time getCurrentTime(LocalFederateId federateID) const override;
58  virtual void setTimeProperty(LocalFederateId federateID, int32_t property, Time time) override;
59  virtual void setIntegerProperty(LocalFederateId federateID,
60  int32_t property,
61  int16_t propertyValue) override;
62  virtual Time getTimeProperty(LocalFederateId federateID, int32_t property) const override;
63  virtual int16_t getIntegerProperty(LocalFederateId federateID, int32_t property) const override;
64  virtual void
65  setFlagOption(LocalFederateId federateID, int32_t flag, bool flagValue = true) override;
66  virtual bool getFlagOption(LocalFederateId federateID, int32_t flag) const override;
67 
69  std::string_view key,
70  std::string_view type,
71  std::string_view units) override;
73  std::string_view key) const override;
75  std::string_view key,
76  std::string_view type,
77  std::string_view units) override;
78 
79  virtual InterfaceHandle getInput(LocalFederateId federateID,
80  std::string_view key) const override;
81 
82  virtual InterfaceHandle registerTranslator(std::string_view translatorName,
83  std::string_view message_type,
84  std::string_view units) override;
85 
86  virtual const std::string& getHandleName(InterfaceHandle handle) const override;
87 
88  virtual void
89  setHandleOption(InterfaceHandle handle, int32_t option, int32_t option_value) override;
90 
91  virtual int32_t getHandleOption(InterfaceHandle handle, int32_t option) const override;
92  virtual void closeHandle(InterfaceHandle handle) override;
93  virtual void removeTarget(InterfaceHandle handle, std::string_view targetToRemove) override;
94  virtual void addDestinationTarget(InterfaceHandle handle,
95  std::string_view dest,
96  InterfaceType hint) override;
97  virtual void
98  addSourceTarget(InterfaceHandle handle, std::string_view name, InterfaceType hint) override;
99  virtual const std::string& getDestinationTargets(InterfaceHandle handle) const override;
100 
101  virtual const std::string& getSourceTargets(InterfaceHandle handle) const override;
102  virtual const std::string& getInjectionUnits(InterfaceHandle handle) const override;
103  virtual const std::string& getExtractionUnits(InterfaceHandle handle) const override;
104  virtual const std::string& getInjectionType(InterfaceHandle handle) const override;
105  virtual const std::string& getExtractionType(InterfaceHandle handle) const override;
106  virtual void setValue(InterfaceHandle handle, const char* data, uint64_t len) override;
107  virtual const std::shared_ptr<const SmallBuffer>& getValue(InterfaceHandle handle,
108  uint32_t* inputIndex) override;
109  virtual const std::vector<std::shared_ptr<const SmallBuffer>>&
110  getAllValues(InterfaceHandle handle) override;
111  virtual const std::vector<InterfaceHandle>&
112  getValueUpdates(LocalFederateId federateID) override;
114  std::string_view name,
115  std::string_view type) override;
116 
118  std::string_view name,
119  std::string_view type) override;
120  virtual InterfaceHandle getEndpoint(LocalFederateId federateID,
121  std::string_view name) const override;
122 
124  std::string_view name) override final;
125 
126  virtual InterfaceHandle getDataSink(LocalFederateId federateID,
127  std::string_view name) const override final;
128 
129  virtual InterfaceHandle registerFilter(std::string_view filterName,
130  std::string_view type_in,
131  std::string_view type_out) override;
132  virtual InterfaceHandle registerCloningFilter(std::string_view filterName,
133  std::string_view type_in,
134  std::string_view type_out) override;
135  virtual InterfaceHandle getFilter(std::string_view name) const override;
136  virtual InterfaceHandle getTranslator(std::string_view name) const override;
137  virtual void addDependency(LocalFederateId federateID, std::string_view federateName) override;
138  virtual void linkEndpoints(std::string_view source, std::string_view dest) override;
139  virtual void addAlias(std::string_view interfaceKey, std::string_view alias) override;
140  virtual void makeConnections(const std::string& file) override;
141  virtual void dataLink(std::string_view source, std::string_view target) override;
142  virtual void addSourceFilterToEndpoint(std::string_view filter,
143  std::string_view endpoint) override;
144  virtual void addDestinationFilterToEndpoint(std::string_view filter,
145  std::string_view endpoint) override;
146  virtual void send(InterfaceHandle sourceHandle, const void* data, uint64_t length) override;
147  virtual void
148  sendAt(InterfaceHandle sourceHandle, const void* data, uint64_t length, Time time) override;
149  virtual void sendTo(InterfaceHandle sourceHandle,
150  const void* data,
151  uint64_t length,
152  std::string_view destination) override;
153  virtual void sendToAt(InterfaceHandle sourceHandle,
154  const void* data,
155  uint64_t length,
156  std::string_view destination,
157  Time time) override;
158  virtual void sendMessage(InterfaceHandle sourceHandle,
159  std::unique_ptr<Message> message) override;
160  virtual uint64_t receiveCount(InterfaceHandle destination) override;
161  virtual std::unique_ptr<Message> receive(InterfaceHandle destination) override;
162  virtual std::unique_ptr<Message> receiveAny(LocalFederateId federateID,
163  InterfaceHandle& endpoint_id) override;
164  virtual uint64_t receiveCountAny(LocalFederateId federateID) override;
165  virtual void logMessage(LocalFederateId federateID,
166  int logLevel,
167  std::string_view messageToLog) override;
168  virtual void setFilterOperator(InterfaceHandle filter,
169  std::shared_ptr<FilterOperator> callback) override;
170  virtual void setTranslatorOperator(InterfaceHandle translator,
171  std::shared_ptr<TranslatorOperator> callback) override;
172  virtual void setFederateOperator(LocalFederateId federateID,
173  std::shared_ptr<FederateOperator> callback) override;
175  virtual const std::string& getIdentifier() const override;
176  virtual const std::string& getAddress() const override;
177 
179  virtual void setLoggingLevel(int logLevel) override;
180  virtual void setLoggingCallback(
181  LocalFederateId federateID,
182  std::function<void(int, std::string_view, std::string_view)> logFunction) override;
183 
184  virtual void setLogFile(std::string_view lfile) override;
185 
186  virtual std::string query(std::string_view target,
187  std::string_view queryStr,
188  HelicsSequencingModes mode) override;
189  virtual void setQueryCallback(LocalFederateId federateID,
190  std::function<std::string(std::string_view)> queryFunction,
191  int order) override;
192  virtual void setGlobal(std::string_view valueName, std::string_view value) override;
193  virtual void sendCommand(std::string_view target,
194  std::string_view commandStr,
195  std::string_view source,
196  HelicsSequencingModes mode) override;
197  virtual std::pair<std::string, std::string> getCommand(LocalFederateId federateID) override;
198 
199  virtual std::pair<std::string, std::string> waitCommand(LocalFederateId federateID) override;
200 
201  virtual bool connect() override;
202  virtual bool isConnected() const override;
203  virtual void disconnect() override;
204  virtual bool waitForDisconnect(
205  std::chrono::milliseconds msToWait = std::chrono::milliseconds(0)) const override;
206 
208  virtual void setInterfaceInfo(InterfaceHandle handle, std::string_view info) override;
210  virtual const std::string& getInterfaceInfo(InterfaceHandle handle) const override;
211 
212  virtual void setInterfaceTag(InterfaceHandle handle,
213  std::string_view tag,
214  std::string_view value) override;
215  virtual const std::string& getInterfaceTag(InterfaceHandle handle,
216  std::string_view tag) const override;
217 
218  virtual void
219  setFederateTag(LocalFederateId fid, std::string_view tag, std::string_view value) override;
220  virtual const std::string& getFederateTag(LocalFederateId fid,
221  std::string_view tag) const override;
222 
223  private:
224  static const std::string emptyString;
225 };
226 
227 } // namespace helics
constexpr auto NO_ITERATION
simplified alias to indicate that no iterations are needed
Definition: CoreTypes.hpp:128
Definition: CoreFederateInfo.hpp:16
Definition: core/Core.hpp:41
Definition: EmptyCore.hpp:19
virtual void setFederateOperator(LocalFederateId federateID, std::shared_ptr< FederateOperator > callback) override
Definition: EmptyCore.cpp:474
virtual InterfaceHandle registerPublication(LocalFederateId federateID, std::string_view key, std::string_view type, std::string_view units) override
Definition: EmptyCore.cpp:209
virtual const std::shared_ptr< const SmallBuffer > & getValue(InterfaceHandle handle, uint32_t *inputIndex) override
Definition: EmptyCore.cpp:289
virtual void logMessage(LocalFederateId federateID, int logLevel, std::string_view messageToLog) override
Definition: EmptyCore.cpp:433
virtual int32_t getFederationSize() override
Definition: EmptyCore.cpp:133
virtual LocalFederateId registerFederate(std::string_view name, const CoreFederateInfo &info) override
Definition: EmptyCore.cpp:115
virtual void setTranslatorOperator(InterfaceHandle translator, std::shared_ptr< TranslatorOperator > callback) override
Definition: EmptyCore.cpp:469
virtual bool isConnected() const override
Definition: EmptyCore.cpp:38
virtual bool enterInitializingMode(LocalFederateId federateID, IterationRequest request) override
Definition: EmptyCore.cpp:104
virtual void setGlobal(std::string_view valueName, std::string_view value) override
Definition: EmptyCore.cpp:516
virtual InterfaceHandle getInput(LocalFederateId federateID, std::string_view key) const override
Definition: EmptyCore.cpp:204
virtual const std::string & getFederateName(LocalFederateId federateID) const override
Definition: EmptyCore.cpp:121
virtual const std::string & getInjectionType(InterfaceHandle handle) const override
Definition: EmptyCore.cpp:238
virtual void disconnect() override
Definition: EmptyCore.cpp:53
virtual Time getCurrentTime(LocalFederateId federateID) const override
Definition: EmptyCore.cpp:155
virtual void finalize(LocalFederateId federateID) override
Definition: EmptyCore.cpp:100
virtual void setInterfaceInfo(InterfaceHandle handle, std::string_view info) override
Definition: EmptyCore.cpp:530
virtual void setFilterOperator(InterfaceHandle filter, std::shared_ptr< FilterOperator > callback) override
Definition: EmptyCore.cpp:464
virtual const std::string & getFederateTag(LocalFederateId fid, std::string_view tag) const override
Definition: EmptyCore.cpp:544
virtual iteration_time requestTimeIterative(LocalFederateId federateID, Time next, IterationRequest iterate) override
Definition: EmptyCore.cpp:143
virtual void setCoreReadyToInit() override
Definition: EmptyCore.cpp:102
virtual void setInterfaceTag(InterfaceHandle handle, std::string_view tag, std::string_view value) override
Definition: EmptyCore.cpp:538
virtual InterfaceHandle registerEndpoint(LocalFederateId federateID, std::string_view name, std::string_view type) override
Definition: EmptyCore.cpp:310
virtual std::pair< std::string, std::string > getCommand(LocalFederateId federateID) override
Definition: EmptyCore.cpp:448
virtual void setValue(InterfaceHandle handle, const char *data, uint64_t len) override
Definition: EmptyCore.cpp:287
virtual int32_t getHandleOption(InterfaceHandle handle, int32_t option) const override
Definition: EmptyCore.cpp:254
virtual bool isOpenToNewFederates() const override
Definition: EmptyCore.cpp:67
virtual InterfaceHandle getDataSink(LocalFederateId federateID, std::string_view name) const override final
Definition: EmptyCore.cpp:336
virtual InterfaceHandle registerTranslator(std::string_view translatorName, std::string_view message_type, std::string_view units) override
Definition: EmptyCore.cpp:197
virtual std::unique_ptr< Message > receive(InterfaceHandle destination) override
Definition: EmptyCore.cpp:417
virtual void dataLink(std::string_view source, std::string_view target) override
Definition: EmptyCore.cpp:370
virtual const std::string & getHandleName(InterfaceHandle handle) const override
Definition: EmptyCore.cpp:223
virtual void setLogFile(std::string_view lfile) override
Definition: EmptyCore.cpp:446
virtual const std::vector< std::shared_ptr< const SmallBuffer > > & getAllValues(InterfaceHandle handle) override
Definition: EmptyCore.cpp:297
virtual uint64_t receiveCount(InterfaceHandle destination) override
Definition: EmptyCore.cpp:412
virtual void addAlias(std::string_view interfaceKey, std::string_view alias) override
Definition: EmptyCore.cpp:369
virtual std::string query(std::string_view target, std::string_view queryStr, HelicsSequencingModes mode) override
Definition: EmptyCore.cpp:506
virtual const std::string & getExtractionType(InterfaceHandle handle) const override
Definition: EmptyCore.cpp:243
virtual void addDestinationFilterToEndpoint(std::string_view filter, std::string_view endpoint) override
Definition: EmptyCore.cpp:377
virtual InterfaceHandle registerCloningFilter(std::string_view filterName, std::string_view type_in, std::string_view type_out) override
Definition: EmptyCore.cpp:349
virtual int getErrorCode() const override
Definition: EmptyCore.cpp:90
virtual const std::string & getInterfaceInfo(InterfaceHandle handle) const override
Definition: EmptyCore.cpp:525
virtual iteration_time enterExecutingMode(LocalFederateId federateID, IterationRequest iterate=NO_ITERATION) override
Definition: EmptyCore.cpp:109
virtual void sendTo(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination) override
Definition: EmptyCore.cpp:384
virtual const std::string & getInjectionUnits(InterfaceHandle handle) const override
Definition: EmptyCore.cpp:228
virtual InterfaceHandle getEndpoint(LocalFederateId federateID, std::string_view name) const override
Definition: EmptyCore.cpp:324
virtual void linkEndpoints(std::string_view source, std::string_view dest) override
Definition: EmptyCore.cpp:367
virtual void sendToAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination, Time time) override
Definition: EmptyCore.cpp:391
virtual Time timeRequest(LocalFederateId federateID, Time next) override
Definition: EmptyCore.cpp:138
virtual void configure(std::string_view configureString) override
Definition: EmptyCore.cpp:27
virtual void sendAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, Time time) override
Definition: EmptyCore.cpp:401
virtual void addSourceFilterToEndpoint(std::string_view filter, std::string_view endpoint) override
Definition: EmptyCore.cpp:372
virtual std::string getErrorMessage() const override
Definition: EmptyCore.cpp:95
virtual InterfaceHandle getTranslator(std::string_view name) const override
Definition: EmptyCore.cpp:361
virtual int16_t getIntegerProperty(LocalFederateId federateID, int32_t property) const override
Definition: EmptyCore.cpp:175
virtual void closeHandle(InterfaceHandle handle) override
Definition: EmptyCore.cpp:259
virtual void sendCommand(std::string_view target, std::string_view commandStr, std::string_view source, HelicsSequencingModes mode) override
Definition: EmptyCore.cpp:518
virtual const std::string & getIdentifier() const override
Definition: EmptyCore.cpp:43
virtual void addDestinationTarget(InterfaceHandle handle, std::string_view dest, InterfaceType hint) override
Definition: EmptyCore.cpp:263
virtual void setLoggingCallback(LocalFederateId federateID, std::function< void(int, std::string_view, std::string_view)> logFunction) override
Definition: EmptyCore.cpp:458
virtual const std::string & getDestinationTargets(InterfaceHandle handle) const override
Definition: EmptyCore.cpp:277
virtual bool isConfigured() const override
Definition: EmptyCore.cpp:62
virtual void setFederateTag(LocalFederateId fid, std::string_view tag, std::string_view value) override
Definition: EmptyCore.cpp:550
virtual InterfaceHandle registerDataSink(LocalFederateId federateID, std::string_view name) override final
Definition: EmptyCore.cpp:330
virtual InterfaceHandle getFilter(std::string_view name) const override
Definition: EmptyCore.cpp:356
virtual bool waitForDisconnect(std::chrono::milliseconds msToWait=std::chrono::milliseconds(0)) const override
Definition: EmptyCore.cpp:55
EmptyCore() noexcept
Definition: EmptyCore.cpp:25
virtual void addSourceTarget(InterfaceHandle handle, std::string_view name, InterfaceType hint) override
Definition: EmptyCore.cpp:270
virtual void send(InterfaceHandle sourceHandle, const void *data, uint64_t length) override
Definition: EmptyCore.cpp:399
virtual InterfaceHandle registerFilter(std::string_view filterName, std::string_view type_in, std::string_view type_out) override
Definition: EmptyCore.cpp:342
virtual const std::string & getSourceTargets(InterfaceHandle handle) const override
Definition: EmptyCore.cpp:282
virtual std::pair< std::string, std::string > waitCommand(LocalFederateId federateID) override
Definition: EmptyCore.cpp:453
virtual void setHandleOption(InterfaceHandle handle, int32_t option, int32_t option_value) override
Definition: EmptyCore.cpp:248
virtual Time getTimeProperty(LocalFederateId federateID, int32_t property) const override
Definition: EmptyCore.cpp:170
virtual void sendMessage(InterfaceHandle sourceHandle, std::unique_ptr< Message > message) override
Definition: EmptyCore.cpp:408
virtual void setFlagOption(LocalFederateId federateID, int32_t flag, bool flagValue=true) override
Definition: EmptyCore.cpp:180
virtual InterfaceHandle registerTargetedEndpoint(LocalFederateId federateID, std::string_view name, std::string_view type) override
Definition: EmptyCore.cpp:317
virtual void addDependency(LocalFederateId federateID, std::string_view federateName) override
Definition: EmptyCore.cpp:382
virtual void setTimeProperty(LocalFederateId federateID, int32_t property, Time time) override
Definition: EmptyCore.cpp:166
virtual void configureFromVector(std::vector< std::string > args) override
Definition: EmptyCore.cpp:31
virtual void setLoggingLevel(int logLevel) override
Definition: EmptyCore.cpp:444
virtual void setIntegerProperty(LocalFederateId federateID, int32_t property, int16_t propertyValue) override
Definition: EmptyCore.cpp:160
virtual void removeTarget(InterfaceHandle handle, std::string_view targetToRemove) override
Definition: EmptyCore.cpp:261
virtual const std::string & getInterfaceTag(InterfaceHandle handle, std::string_view tag) const override
Definition: EmptyCore.cpp:532
virtual const std::vector< InterfaceHandle > & getValueUpdates(LocalFederateId federateID) override
Definition: EmptyCore.cpp:303
virtual InterfaceHandle registerInput(LocalFederateId federateID, std::string_view key, std::string_view type, std::string_view units) override
Definition: EmptyCore.cpp:189
virtual void setQueryCallback(LocalFederateId federateID, std::function< std::string(std::string_view)> queryFunction, int order) override
Definition: EmptyCore.cpp:479
virtual void processCommunications(LocalFederateId fedId, std::chrono::milliseconds msToWait) override final
Definition: EmptyCore.cpp:150
virtual void configureFromArgs(int argc, char *argv[]) override
Definition: EmptyCore.cpp:29
virtual bool connect() override
Definition: EmptyCore.cpp:33
virtual void makeConnections(const std::string &file) override
Definition: EmptyCore.cpp:365
virtual const std::string & getAddress() const override
Definition: EmptyCore.cpp:48
virtual LocalFederateId getFederateId(std::string_view name) const override
Definition: EmptyCore.cpp:128
virtual const std::string & getExtractionUnits(InterfaceHandle handle) const override
Definition: EmptyCore.cpp:233
virtual InterfaceHandle getPublication(LocalFederateId federateID, std::string_view key) const override
Definition: EmptyCore.cpp:217
virtual std::unique_ptr< Message > receiveAny(LocalFederateId federateID, InterfaceHandle &endpoint_id) override
Definition: EmptyCore.cpp:422
virtual uint64_t receiveCountAny(LocalFederateId federateID) override
Definition: EmptyCore.cpp:428
virtual bool getFlagOption(LocalFederateId federateID, int32_t flag) const override
Definition: EmptyCore.cpp:184
Definition: LocalFederateId.hpp:65
Definition: LocalFederateId.hpp:22
HelicsSequencingModes
Definition: helics_enums.h:427
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
InterfaceType
Definition: CoreTypes.hpp:112
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
Definition: helicsTime.hpp:43