 |
helics
3.3.0
|
9 #include "../common/JsonBuilder.hpp"
10 #include "ActionMessage.hpp"
11 #include "BasicHandleInfo.hpp"
14 #include "FederateIdExtra.hpp"
15 #include "HandleManager.hpp"
16 #include "TimeDependencies.hpp"
17 #include "UnknownHandleManager.hpp"
18 #include "gmlc/concurrency/DelayedObjects.hpp"
19 #include "gmlc/concurrency/TriggerVariable.hpp"
20 #include "gmlc/containers/AirLock.hpp"
21 #include "gmlc/containers/DualStringMappedVector.hpp"
22 #include "gmlc/containers/SimpleQueue.hpp"
34 #include <unordered_map>
46 REQUEST_DISCONNECT = 48,
58 bool nonCounting{
false};
59 explicit BasicFedInfo(std::string_view fedname):
name(fedname) {}
79 bool _observer{
false};
85 class TimeCoordinator;
97 std::atomic<bool> _isRoot{
false};
99 bool connectionEstablished{
false};
103 DualStringMappedVector<BasicFedInfo, GlobalFederateId, reference_stability::unstable>
107 DualStringMappedVector<BasicBrokerInfo, GlobalBrokerId, reference_stability::unstable>
110 std::string mPreviousLocalBrokerIdentifier;
112 HandleManager handles;
113 UnknownHandleManager unknownHandles;
114 std::vector<std::pair<std::string, GlobalFederateId>> delayedDependencies;
117 std::unordered_map<GlobalFederateId, LocalFederateId> global_id_translation;
119 std::unordered_map<GlobalFederateId, route_id> routing_table;
121 std::unordered_map<std::string, route_id> knownExternalEndpoints;
122 std::unordered_map<std::string, std::string> global_values;
123 std::mutex name_mutex_;
124 std::atomic<int> queryCounter{1};
125 bool force_connection{
false};
126 gmlc::concurrency::DelayedObjects<std::string> activeQueries;
127 std::vector<std::tuple<fileops::JsonMapBuilder, std::vector<ActionMessage>,
bool>> mapBuilders;
130 std::deque<std::pair<int32_t, decltype(std::chrono::steady_clock::now())>> queryTimeouts;
132 std::vector<ActionMessage> earlyMessages;
133 gmlc::concurrency::TriggerVariable disconnection;
134 std::unique_ptr<TimeoutMonitor> timeoutMon;
136 std::atomic<uint16_t> nextAirLock{0};
137 std::array<gmlc::containers::AirLock<std::any>, 3> dataAirlocks;
141 mTimeMonitorFederate;
142 GlobalFederateId mTimeMonitorFederateId{};
143 GlobalFederateId mTimeMonitorLocalFederateId{};
146 Time mTimeMonitorLastLogTime{Time::minVal()};
147 Time mTimeMonitorCurrentTime{Time::minVal()};
148 std::atomic<double> simTime{mInvalidSimulationTime};
153 virtual void processCommand(ActionMessage&& command)
override;
159 void processPriorityCommand(ActionMessage&& command)
override;
162 void processBrokerConfigureCommands(ActionMessage& cmd);
164 gmlc::containers::SimpleQueue<ActionMessage> delayTransmitQueue;
166 void transmitDelayedMessages();
170 void routeMessage(ActionMessage& cmd, GlobalFederateId dest);
171 void routeMessage(ActionMessage&& cmd, GlobalFederateId dest);
174 void routeMessage(
const ActionMessage& cmd);
175 void routeMessage(ActionMessage&& cmd);
177 void transmitToParent(ActionMessage&& cmd);
179 void propagateError(ActionMessage&& cmd);
181 void broadcast(ActionMessage& cmd);
183 route_id fillMessageRouteInformation(ActionMessage& mess);
186 void executeInitializationOperations();
188 uint16_t getNextAirlockIndex();
191 bool verifyBrokerKey(ActionMessage& mess)
const;
194 bool verifyBrokerKey(std::string_view key)
const;
199 virtual bool connect() override final;
217 virtual
bool isRoot() const override final {
return _isRoot; };
222 std::function<
void(
int, std::string_view, std::string_view)> logFunction)
override final;
225 std::chrono::milliseconds msToWait = std::chrono::milliseconds(0)) const override final;
231 virtual
void globalError(int32_t errorCode, std::string_view errorString) override final;
236 virtual
bool brokerConnect() = 0;
239 virtual
void brokerDisconnect() = 0;
265 virtual
void addRoute(
route_id rid,
int interfaceId, std::string_view routeInfo) = 0;
274 explicit
CoreBroker(
bool setAsRootBroker = false) noexcept;
276 explicit
CoreBroker(std::string_view broker_name);
280 virtual
void configure(std::string_view configureString) override final;
298 virtual const std::string&
getAddress() const override final;
300 virtual
void setLogFile(std::string_view lfile) override final;
302 query(std::string_view target,
303 std::string_view queryStr,
305 virtual
void setGlobal(std::string_view valueName, std::string_view value) override final;
307 std::string_view commandStr,
310 virtual
void linkEndpoints(std::string_view source, std::string_view target) override final;
311 virtual
void dataLink(std::string_view publication, std::string_view input) override final;
314 std::string_view endpoint) override final;
317 std::string_view endpoint) override final;
318 virtual
void addAlias(std::string_view interfaceKey, std::string_view alias) override final;
326 int getCountableFederates() const;
328 void checkDependencies();
330 void findAndNotifyInputTargets(
BasicHandleInfo& handleInfo, const std::
string& key);
331 void findAndNotifyPublicationTargets(
BasicHandleInfo& handleInfo, const std::
string& key);
333 void findAndNotifyFilterTargets(
BasicHandleInfo& handleInfo, const std::
string& key);
334 void findAndNotifyEndpointTargets(
BasicHandleInfo& handleInfo, const std::
string& key);
356 void checkQueryTimeouts();
362 std::
string generateQueryAnswer(std::string_view request,
bool force_ordering);
364 std::
string quickBrokerQueries(std::string_view request) const;
370 std::
string getNameList(std::string_view gidString) const;
376 const BasicBrokerInfo* getBrokerById(GlobalBrokerId brokerid)
const;
378 BasicBrokerInfo* getBrokerById(GlobalBrokerId brokerid);
380 void addLocalInfo(BasicHandleInfo& handleInfo,
const ActionMessage& m);
381 void addPublication(ActionMessage& m);
382 void addInput(ActionMessage& m);
383 void addEndpoint(ActionMessage& m);
384 void addFilter(ActionMessage& m);
385 void addTranslator(ActionMessage& m);
387 void brokerRegistration(ActionMessage&& command);
389 void linkInterfaces(ActionMessage& command);
391 void fedRegistration(ActionMessage&& command);
395 void initializeMapBuilder(std::string_view request,
398 bool force_ordering);
400 std::string generateGlobalStatus(fileops::JsonMapBuilder& builder);
402 void sendErrorToImmediateBrokers(
int errorCode);
406 std::string generateFederationSummary()
const;
408 void labelAsDisconnected(GlobalBrokerId brkid);
411 void processTimeMonitorMessage(ActionMessage& m);
413 void loadTimeMonitor(
bool firstLoad, std::string_view newFederate);
415 void generateTimeBarrier(ActionMessage& m);
416 int generateMapObjectCounter()
const;
417 friend class TimeoutMonitor;
constexpr Time timeZero
Definition: helicsTime.hpp:31
@ destination_target
indicator that the target is a destination target
Definition: flagOperations.hpp:43
@ CONNECTED
the connection process has completed
virtual void dataLink(std::string_view publication, std::string_view input) override final
Definition: CoreBroker.cpp:185
void clearFederateUnknowns(GlobalFederateId id)
Definition: UnknownHandleManager.cpp:311
@ processed
the message was used to update the current state
bool isRunning() const
Definition: BrokerBase.hpp:201
virtual void configure(std::string_view configureString) override final
Definition: CoreBroker.cpp:2140
@ indicator_flag
flag used for setting values
Definition: flagOperations.hpp:18
int32_t minBrokerCount
Definition: BrokerBase.hpp:56
void name(std::string_view name)
Definition: ActionMessage.hpp:107
virtual void addAlias(std::string_view interfaceKey, std::string_view alias) override final
Definition: CoreBroker.cpp:210
@ CONFIGURED
the broker itself has been configured and is ready to connect
GlobalBrokerId higher_broker_id
the id code of the broker 1 level about this broker
Definition: BrokerBase.hpp:49
bool useJsonSerialization
Definition: BrokerBase.hpp:145
std::string brokerKey
Definition: BrokerBase.hpp:71
Time timeout
timeout to wait to establish a broker connection before giving up
Definition: BrokerBase.hpp:63
virtual std::shared_ptr< helicsCLI11App > generateCLI() override
Definition: CoreBroker.cpp:2190
std::vector< std::string > checkForEndpointLinks(const std::string &newSource) const
Definition: UnknownHandleManager.cpp:113
@ HELICS_SEQUENCING_MODE_ORDERED
Definition: helics_enums.h:399
virtual double getSimulationTime() const override
Definition: CoreBroker.cpp:2185
@ optional_flag
flag indicating that a connection is optional and may not be matched
Definition: flagOperations.hpp:53
@ core_flag
flag indicating that message comes from a core vs a broker
Definition: flagOperations.hpp:74
virtual void configureFromVector(std::vector< std::string > args) override final
Definition: CoreBroker.cpp:2170
bool asyncTime
flag indicating the use of async time keeping
Definition: BrokerBase.hpp:92
bool enable_profiling
Definition: BrokerBase.hpp:146
@ ERROR_LEVEL
only print errors
Definition: logging.hpp:23
@ cancel_flag
flag indicating an operation is canceled
Definition: flagOperations.hpp:113
action_t
Definition: ActionMessageDefintions.hpp:20
constexpr IdentifierBaseType gGlobalBrokerIdShift
Definition: GlobalFederateId.hpp:23
@ TERMINATING
the termination process has started
virtual void removeRoute(route_id rid)=0
void clearPublication(const std::string &newPublication)
Definition: UnknownHandleManager.cpp:291
GlobalBrokerId getGlobalId() const
Definition: BrokerBase.hpp:210
bool hasTimeDependency
Definition: BrokerBase.hpp:136
base helics enumerations for C++ API's, a namespace wrapper for the definitions defined in helics_enu...
route_id route
the routing information for data to be sent to the federate
Definition: CoreBroker.hpp:55
@ HELICS_LOG_LEVEL_WARNING
Definition: helics_enums.h:192
bool _sent_disconnect_ack
indicator that the disconnect ack has been sent
Definition: CoreBroker.hpp:77
virtual void disconnect() override final
Definition: CoreBroker.cpp:2344
std::vector< std::string > checkForLinks(const std::string &newSource) const
Definition: UnknownHandleManager.cpp:107
bool _disable_ping
indicator that the broker doesn't respond to pings
Definition: CoreBroker.hpp:78
@ async_timing_flag
flag indicating use of asynchronous timing on a global level
Definition: flagOperations.hpp:81
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
virtual void addDestinationFilterToEndpoint(std::string_view filter, std::string_view endpoint) override final
Definition: CoreBroker.cpp:201
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:35
bool sendToLogger(GlobalFederateId federateID, int logLevel, std::string_view name, std::string_view message, bool fromRemote=false) const
Definition: BrokerBase.cpp:343
const std::string name
name of the federate
Definition: CoreBroker.hpp:53
std::atomic< GlobalBrokerId > global_id
Definition: BrokerBase.hpp:46
@ CONNECTING
the connection process has started
Definition: GlobalFederateId.hpp:72
Definition: ActionMessage.hpp:30
bool uuid_like
will be set to true if the name looks like a uuid
Definition: BrokerBase.hpp:143
constexpr GlobalBrokerId parent_broker_id
Definition: GlobalFederateId.hpp:64
Definition: CoreBroker.hpp:63
void setIdentifier(std::string_view name)
Definition: CoreBroker.cpp:68
@ FILTER
handle to a filter
const friend std::string & brokerStateName(BrokerState state)
Definition: BrokerBase.cpp:965
const std::string name
the name of the broker
Definition: CoreBroker.hpp:65
int parseArgs(int argc, char *argv[])
Definition: BrokerBase.cpp:268
@ INPUT
handle to a input interface
std::atomic< bool > haltOperations
flag indicating that no further message should be processed
Definition: BrokerBase.hpp:80
bool hasUnknowns() const
Definition: UnknownHandleManager.cpp:144
std::shared_ptr< LogManager > mLogManager
object to handle the logging considerations
Definition: BrokerBase.hpp:110
std::atomic< int32_t > maxLogLevel
Definition: BrokerBase.hpp:51
Definition: helicsCLI11.hpp:42
constexpr auto versionString
Definition: helicsVersion.hpp:18
ConnectionState getAllConnectionState() const
Definition: CoreBroker.cpp:4142
virtual void configureBase()
Definition: BrokerBase.cpp:295
uint16_t counter
26 counter for filter tracking or message counter
Definition: ActionMessage.hpp:41
virtual void setLoggingCallback(std::function< void(int, std::string_view, std::string_view)> logFunction) override final
Definition: CoreBroker.cpp:117
virtual void addSourceFilterToEndpoint(std::string_view filter, std::string_view endpoint) override final
Definition: CoreBroker.cpp:193
int32_t minChildCount
Definition: BrokerBase.hpp:60
virtual void transmit(route_id route, const ActionMessage &command)=0
bool no_ping
indicator that the broker is not very responsive to ping requests
Definition: BrokerBase.hpp:142
bool _core
if set to true the broker is a core, false is a broker
Definition: CoreBroker.hpp:74
LogLevels
Definition: logging.hpp:20
virtual const std::string & getIdentifier() const override final
Definition: CoreBroker.hpp:297
void toggleActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:160
virtual std::string query(std::string_view target, std::string_view queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) override final
Definition: CoreBroker.cpp:3065
virtual ~CoreBroker()
Definition: CoreBroker.cpp:62
Definition: core-exceptions.hpp:48
virtual void globalError(int32_t errorCode, std::string_view errorString) override final
Definition: CoreBroker.cpp:2283
bool hasRequiredUnknowns() const
Definition: UnknownHandleManager.cpp:185
GlobalFederateId global_id
the identification code for the federate
Definition: CoreBroker.hpp:54
bool globalTime
flag indicating that the broker should use a global time coordinator
Definition: BrokerBase.hpp:90
GlobalBrokerId global_id
the global identifier for the broker
Definition: CoreBroker.hpp:67
std::vector< targetInfo > checkForPublications(const std::string &newPublication) const
Definition: UnknownHandleManager.cpp:102
Definition: CoreBroker.hpp:51
virtual void setLoggingLevel(int logLevel) override final
Definition: CoreBroker.cpp:3046
virtual bool connect() override final
Definition: CoreBroker.cpp:2215
void addActionMessage(const ActionMessage &m)
Definition: BrokerBase.cpp:551
virtual std::string generateLocalAddressString() const =0
void clearInput(const std::string &newInput)
Definition: UnknownHandleManager.cpp:285
virtual bool isRoot() const override final
Definition: CoreBroker.hpp:217
constexpr GlobalBrokerId gRootBrokerID
Definition: GlobalFederateId.hpp:66
std::shared_ptr< Broker > findBroker(std::string_view brokerName)
Definition: BrokerFactory.cpp:183
Definition: GlobalFederateId.hpp:184
virtual void clearTimeBarrier() override final
Definition: CoreBroker.cpp:2274
void clearEndpoint(const std::string &newEndpoint)
Definition: UnknownHandleManager.cpp:297
std::unique_ptr< BaseTimeCoordinator > timeCoord
object managing the time control
Definition: BrokerBase.hpp:108
std::vector< targetInfo > checkForFilters(const std::string &newFilter) const
Definition: UnknownHandleManager.cpp:127
virtual void setTimeBarrier(Time barrierTime) override final
Definition: CoreBroker.cpp:2263
virtual void processDisconnect(bool skipUnregister=false) override final
Definition: CoreBroker.cpp:2307
virtual bool isOpenToNewFederates() const override
Definition: CoreBroker.cpp:233
int32_t messageID
8 – message ID for a variety of purposes
Definition: ActionMessage.hpp:36
GlobalBrokerId parent
the id of the parent broker/core
Definition: CoreBroker.hpp:56
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:130
virtual bool isConnected() const override final
Definition: CoreBroker.cpp:2292
@ CONFIGURING
the broker is in the processing of configuring
std::size_t currentMessageCounter() const
Definition: BrokerBase.hpp:292
Definition: BasicHandleInfo.hpp:20
virtual const std::string & getAddress() const override final
Definition: CoreBroker.cpp:77
bool allInitReady() const
Definition: CoreBroker.cpp:4169
@ non_counting_flag
flag indicating that a federate should not count in any totals
Definition: flagOperations.hpp:90
std::string routeInfo
string describing the connection information for the route
Definition: CoreBroker.hpp:81
bool enteredExecutionMode
flag indicating that the broker has entered execution mode
Definition: BrokerBase.hpp:138
Definition: GlobalFederateId.hpp:27
std::vector< targetInfo > checkForEndpoints(const std::string &newEndpoint) const
Definition: UnknownHandleManager.cpp:120
virtual void linkEndpoints(std::string_view source, std::string_view target) override final
Definition: CoreBroker.cpp:177
SmallBuffer payload
buffer to contain the data payload
Definition: ActionMessage.hpp:48
bool terminate_on_error
flag indicating that the federation should halt on any error
Definition: BrokerBase.hpp:84
@ TRANSLATOR
handle to a translator object
GlobalFederateId dest_id
20 fed_id for a targeted message
Definition: ActionMessage.hpp:39
HelicsSequencingModes
Definition: helics_enums.h:395
BasicHandleInfo * getEndpoint(std::string_view name)
Definition: HandleManager.cpp:203
virtual bool waitForDisconnect(std::chrono::milliseconds msToWait=std::chrono::milliseconds(0)) const override final
Definition: CoreBroker.cpp:2298
std::string prettyPrintString(const ActionMessage &command)
Definition: ActionMessage.cpp:846
std::pair< bool, std::vector< std::string_view > > processBaseCommands(ActionMessage &command)
Definition: BrokerBase.cpp:439
@ observer_flag
flag indicating that a federate is an observer only
Definition: flagOperations.hpp:83
void addBaseInformation(Json::Value &base, bool hasParent) const
Definition: BrokerBase.cpp:510
GlobalBrokerId parent
Definition: CoreBroker.hpp:69
constexpr GlobalFederateId getSpecialFederateId(GlobalBrokerId broker, GlobalBrokerId::BaseType index)
Definition: GlobalFederateId.hpp:131
@ CREATED
the broker has been created
bool _gateway
set to true if this broker should act as a gateway.
Definition: CoreBroker.hpp:95
Time actionTime
40 the time an action took place or will take place //32
Definition: ActionMessage.hpp:44
@ parent_flag
flag indicating the message is from a parent object
Definition: flagOperations.hpp:32
constexpr bool isValid() const
Definition: GlobalFederateId.hpp:109
std::string generateInterfaceQueryResults(std::string_view request, const HandleManager &handles, const GlobalFederateId fed, const std::function< void(Json::Value &)> &addHeaderInfo)
Definition: queryHelpers.cpp:208
virtual void setAsRoot() override final
Definition: CoreBroker.cpp:2207
@ TERMINATED
the termination process has started
@ slow_responding_flag
flag indicating a federate, core or broker is slow responding
Definition: flagOperations.hpp:88
@ ERRORED
an error was encountered
void setDestination(GlobalHandle hand)
Definition: ActionMessage.hpp:99
bool _route_key
indicator that the broker has a unique route id
Definition: CoreBroker.hpp:76
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
virtual void setLogFile(std::string_view lfile) override final
Definition: CoreBroker.cpp:3055
@ ENDPOINT
handle to an endpoint
void clearFilter(const std::string &newFilter)
Definition: UnknownHandleManager.cpp:304
void processUnknowns(const std::function< void(const std::string &name, char type, GlobalHandle)> &cfunc) const
Definition: UnknownHandleManager.cpp:211
@ HELICS_SEQUENCING_MODE_FAST
Definition: helics_enums.h:397
void clearActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:153
bool _nonLocal
indicator that the broker has a subbroker as a parent.
Definition: CoreBroker.hpp:75
Time queryTimeout
Definition: BrokerBase.hpp:65
void processRequiredUnknowns(const std::function< void(const std::string &name, char type, GlobalHandle)> &cfunc) const
Definition: UnknownHandleManager.cpp:258
@ global_timing_flag
flag indicating to use global timing (overload of indicator flag)
Definition: flagOperations.hpp:76
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition: flagOperations.hpp:138
@ NEXT_STEP
indicator that the iterations have completed
std::vector< targetInfo > checkForInputs(const std::string &newInput) const
Definition: UnknownHandleManager.cpp:96
constexpr IdentifierBaseType gGlobalFederateIdShift
Definition: GlobalFederateId.hpp:21
bool _hasTimeDependency
Definition: CoreBroker.hpp:73
@ WARNING
print/log warning and errors
Definition: logging.hpp:25
void setTickForwarding(TickForwardingReasons reason, bool value=true)
Definition: BrokerBase.cpp:858
virtual void sendCommand(std::string_view target, std::string_view commandStr, HelicsSequencingModes mode) override final
Definition: CoreBroker.cpp:3161
@ use_json_serialization_flag
flag to indicate it should use the json packetization
Definition: flagOperations.hpp:79
virtual void configureFromArgs(int argc, char *argv[]) override final
Definition: CoreBroker.cpp:2155
Definition: TimeoutMonitor.h:27
@ clone_flag
flag indicating the filter is a clone filter or the data needs to be cloned
Definition: flagOperations.hpp:55
route_id route
the identifier for the route to take to the broker
Definition: CoreBroker.hpp:68
void logFlush()
Definition: BrokerBase.cpp:537
@ required_flag
flag indicating that an action or match is required
Definition: flagOperations.hpp:45
Definition: CoreBroker.hpp:93
@ OPERATING
normal operating conditions
ConnectionState state
specify the current status of the broker
Definition: CoreBroker.hpp:71
Time loadTimeFromString(std::string_view timeString)
Definition: timeOperations.cpp:21
Definition: core/Broker.hpp:18
ConnectionState
Definition: CoreBroker.hpp:41
const std::string & stateString(OperatingState state)
Definition: CommonCore.cpp:56
void processNonOptionalUnknowns(const std::function< void(const std::string &name, char type, GlobalHandle)> &cfunc) const
Definition: UnknownHandleManager.cpp:228
gmlc::containers::BlockingPriorityQueue< ActionMessage > actionQueue
primary routing queue
Definition: BrokerBase.hpp:109
@ error_flag
flag indicating an error condition associated with the command
Definition: flagOperations.hpp:17
int32_t minFederateCount
Definition: BrokerBase.hpp:54
std::string identifier
an identifier for the broker
Definition: BrokerBase.hpp:70
virtual void addRoute(route_id rid, int interfaceId, std::string_view routeInfo)=0
Definition: BrokerBase.hpp:42
virtual void setGlobal(std::string_view valueName, std::string_view value) override final
Definition: CoreBroker.cpp:3152
void setErrorState(int eCode, std::string_view estring)
Definition: BrokerBase.cpp:396
bool isPriorityCommand(const ActionMessage &command) noexcept
Definition: ActionMessage.hpp:232
std::string address
network location of the broker
Definition: BrokerBase.hpp:76
virtual void makeConnections(const std::string &file) override final
Definition: CoreBroker.cpp:168
void unregisterBroker(std::string_view name)
Definition: BrokerFactory.cpp:302
@ PUBLICATION
handle to output interface
GlobalFederateId source_id
12 – for federate_id or route_id
Definition: ActionMessage.hpp:37
bool hasNonOptionalUnknowns() const
Definition: UnknownHandleManager.cpp:151
GlobalBrokerId global_broker_id_local
Definition: BrokerBase.hpp:47
void bufferToJson(const LogBuffer &buffer, Json::Value &base)
Definition: LogBuffer.cpp:60
@ child_flag
flag indicating a message is from a child object
Definition: flagOperations.hpp:35
bool isValidIndex(sizeType testSize, const SizedDataType &vec)
Definition: core-data.hpp:171
void unregister()
Definition: CoreBroker.cpp:2326
std::string generateJsonErrorResponse(JsonErrorCodes code, const std::string &message)
Definition: JsonGeneration.hpp:36