helics 3.7.0
Loading...
Searching...
No Matches
cpp98/Broker.hpp
1/*
2Copyright (c) 2017-2026,
3Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Energy
4Innovation LLC. See the top-level NOTICE for additional details. All rights reserved.
5SPDX-License-Identifier: BSD-3-Clause
6*/
7#ifndef HELICS_CPP98_BROKER_HPP_
8#define HELICS_CPP98_BROKER_HPP_
9#pragma once
10
11#include "config.hpp"
12#include "helics/helics.h"
13#include "helicsExceptions.hpp"
14
15#include <stdexcept>
16#include <string>
17
18namespace helicscpp {
19class Broker {
20 public:
22 Broker() HELICS_NOTHROW: broker(HELICS_NULL_POINTER) {}
28 Broker(std::string type, std::string name, std::string initString)
29 {
30 broker =
31 helicsCreateBroker(type.c_str(), name.c_str(), initString.c_str(), hThrowOnError());
33 throw(std::runtime_error("broker creation failed"));
34 }
35 }
42 Broker(std::string type, std::string name, int argc, char** argv)
43 {
44 broker =
45 helicsCreateBrokerFromArgs(type.c_str(), name.c_str(), argc, argv, hThrowOnError());
46 }
50 Broker& operator=(const Broker& brk)
51 {
53 return *this;
54 }
55#ifdef HELICS_HAS_RVALUE_REFS
57 Broker(Broker&& brk) HELICS_NOTHROW: broker(brk.broker) { brk.broker = HELICS_NULL_POINTER; }
59 Broker& operator=(Broker&& brk) HELICS_NOTHROW
60 {
61 broker = brk.broker;
62 brk.broker = HELICS_NULL_POINTER;
63 return *this;
64 }
65#endif
67 virtual ~Broker()
68 {
69 if (broker != HELICS_NULL_POINTER) {
71 }
72 }
74 operator HelicsBroker() { return broker; }
77 HELICS_NODISCARD HelicsBroker baseObject() const { return broker; }
79 HELICS_NODISCARD bool isConnected() const
80 {
82 }
84 HELICS_NODISCARD bool isRoot() const { return (helicsBrokerIsRoot(broker) != HELICS_FALSE); }
86 HELICS_NODISCARD bool isOpenToNewFederates() const
87 {
89 }
94 bool waitForDisconnect(int msToWait = -1)
95 {
97 }
102 HELICS_NODISCARD const char* getIdentifier() const { return helicsBrokerGetIdentifier(broker); }
104 HELICS_NODISCARD const char* getAddress() const { return helicsBrokerGetAddress(broker); }
105
114 void setGlobal(const std::string& valueName, const std::string& value)
115 {
116 helicsBrokerSetGlobal(broker, valueName.c_str(), value.c_str(), hThrowOnError());
117 }
122 void addAlias(const std::string& interfaceName, const std::string& alias)
123 {
124 helicsBrokerAddAlias(broker, interfaceName.c_str(), alias.c_str(), hThrowOnError());
125 }
129 void dataLink(const std::string& source, const std::string& target)
130 {
131 helicsBrokerDataLink(broker, source.c_str(), target.c_str(), hThrowOnError());
132 }
137 void addSourceFilterToEndpoint(const std::string& filter, const std::string& target)
138 {
140 filter.c_str(),
141 target.c_str(),
142 hThrowOnError());
143 }
148 void addDestinationFilterToEndpoint(const std::string& filter, const std::string& target)
149 {
151 filter.c_str(),
152 target.c_str(),
153 hThrowOnError());
154 }
155
169 std::string query(const std::string& target,
170 const std::string& queryStr,
172 {
173 // returns HelicsQuery
174 HelicsQuery q = helicsCreateQuery(target.c_str(), queryStr.c_str());
175 if (mode != HELICS_SEQUENCING_MODE_FAST) {
176 helicsQuerySetOrdering(q, mode, HELICS_IGNORE_ERROR);
177 }
178 std::string result(helicsQueryBrokerExecute(q, broker, hThrowOnError()));
180 return result;
181 }
182
187 void sendCommand(const std::string& target, const std::string& command)
188 {
189 helicsBrokerSendCommand(broker, target.c_str(), command.c_str(), hThrowOnError());
190 }
191
192 void setTimeBarrier(HelicsTime barrierTime)
193 {
194 helicsBrokerSetTimeBarrier(broker, barrierTime, HELICS_IGNORE_ERROR);
195 }
196
197 void clearTimeBarrier() { helicsBrokerClearTimeBarrier(broker); }
198
199 void globalError(int errorCode, const std::string& errorString)
200 {
201 helicsBrokerGlobalError(broker, errorCode, errorString.c_str(), HELICS_IGNORE_ERROR);
202 }
203
204 protected:
206};
207
208} // namespace helicscpp
209#endif
double HelicsTime
Definition api-data.h:106
void * HelicsQuery
Definition api-data.h:83
const HelicsBool HELICS_FALSE
Definition api-data.h:123
const HelicsBool HELICS_TRUE
Definition api-data.h:122
void * HelicsBroker
Definition api-data.h:60
Definition cpp98/Broker.hpp:19
HELICS_NODISCARD HelicsBroker baseObject() const
Definition cpp98/Broker.hpp:77
void addAlias(const std::string &interfaceName, const std::string &alias)
Definition cpp98/Broker.hpp:122
Broker() HELICS_NOTHROW
Definition cpp98/Broker.hpp:22
Broker(std::string type, std::string name, int argc, char **argv)
Definition cpp98/Broker.hpp:42
HELICS_NODISCARD bool isRoot() const
Definition cpp98/Broker.hpp:84
HELICS_NODISCARD bool isOpenToNewFederates() const
Definition cpp98/Broker.hpp:86
Broker(const Broker &brk)
Definition cpp98/Broker.hpp:48
void addSourceFilterToEndpoint(const std::string &filter, const std::string &target)
Definition cpp98/Broker.hpp:137
HELICS_NODISCARD const char * getAddress() const
Definition cpp98/Broker.hpp:104
HelicsBroker broker
underlying broker information
Definition cpp98/Broker.hpp:205
Broker(std::string type, std::string name, std::string initString)
Definition cpp98/Broker.hpp:28
void disconnect()
Definition cpp98/Broker.hpp:100
void dataLink(const std::string &source, const std::string &target)
Definition cpp98/Broker.hpp:129
virtual ~Broker()
Definition cpp98/Broker.hpp:67
bool waitForDisconnect(int msToWait=-1)
Definition cpp98/Broker.hpp:94
std::string query(const std::string &target, const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) const
Definition cpp98/Broker.hpp:169
void sendCommand(const std::string &target, const std::string &command)
Definition cpp98/Broker.hpp:187
void addDestinationFilterToEndpoint(const std::string &filter, const std::string &target)
Definition cpp98/Broker.hpp:148
void setGlobal(const std::string &valueName, const std::string &value)
Definition cpp98/Broker.hpp:114
HELICS_NODISCARD const char * getIdentifier() const
Definition cpp98/Broker.hpp:102
HELICS_NODISCARD bool isConnected() const
Definition cpp98/Broker.hpp:79
Broker & operator=(const Broker &brk)
Definition cpp98/Broker.hpp:50
Definition helicsExceptions.hpp:38
void helicsBrokerSetTimeBarrier(HelicsBroker broker, HelicsTime barrierTime, HelicsError *err)
Definition helicsExport.cpp:690
const char * helicsQueryBrokerExecute(HelicsQuery query, HelicsBroker broker, HelicsError *err)
Definition helicsExport.cpp:1209
const char * helicsBrokerGetAddress(HelicsBroker broker)
Definition helicsExport.cpp:913
HelicsBool helicsBrokerIsOpenToNewFederates(HelicsBroker broker)
Definition helicsExport.cpp:560
void helicsBrokerDataLink(HelicsBroker broker, const char *source, const char *target, HelicsError *err)
Definition helicsExport.cpp:571
void helicsBrokerGlobalError(HelicsBroker broker, int errorCode, const char *errorString, HelicsError *err)
Definition helicsExport.cpp:708
HelicsBool helicsBrokerIsRoot(HelicsBroker broker)
Definition helicsExport.cpp:551
HelicsBool helicsBrokerWaitForDisconnect(HelicsBroker broker, int msToWait, HelicsError *err)
Definition helicsExport.cpp:986
void helicsQuerySetOrdering(HelicsQuery query, int32_t mode, HelicsError *err)
Definition helicsExport.cpp:1322
void helicsBrokerSendCommand(HelicsBroker broker, const char *target, const char *command, HelicsError *err)
Definition helicsExport.cpp:663
HelicsBroker helicsBrokerClone(HelicsBroker broker, HelicsError *err)
Definition helicsExport.cpp:519
HelicsBroker helicsCreateBrokerFromArgs(const char *type, const char *name, int argc, const char *const *argv, HelicsError *err)
Definition helicsExport.cpp:486
const char * helicsBrokerGetIdentifier(HelicsBroker broker)
Definition helicsExport.cpp:892
void helicsQueryFree(HelicsQuery query)
Definition helicsExport.cpp:1331
void helicsBrokerAddDestinationFilterToEndpoint(HelicsBroker broker, const char *filter, const char *endpoint, HelicsError *err)
Definition helicsExport.cpp:739
HelicsQuery helicsCreateQuery(const char *target, const char *query)
Definition helicsExport.cpp:1145
void helicsBrokerClearTimeBarrier(HelicsBroker broker)
Definition helicsExport.cpp:699
HelicsBool helicsBrokerIsConnected(HelicsBroker broker)
Definition helicsExport.cpp:542
HelicsBroker helicsCreateBroker(const char *type, const char *name, const char *initString, HelicsError *err)
Definition helicsExport.cpp:458
void helicsBrokerDisconnect(HelicsBroker broker, HelicsError *err)
Definition helicsExport.cpp:1022
void helicsBrokerAddSourceFilterToEndpoint(HelicsBroker broker, const char *filter, const char *endpoint, HelicsError *err)
Definition helicsExport.cpp:726
void helicsBrokerSetGlobal(HelicsBroker broker, const char *valueName, const char *value, HelicsError *err)
Definition helicsExport.cpp:599
void helicsBrokerFree(HelicsBroker broker)
Definition helicsExport.cpp:1066
void helicsBrokerAddAlias(HelicsBroker broker, const char *interfaceName, const char *alias, HelicsError *err)
Definition helicsExport.cpp:639
HelicsSequencingModes
Definition helics_enums.h:429
@ HELICS_SEQUENCING_MODE_FAST
Definition helics_enums.h:431
Definition cpp98/Broker.hpp:18