helics  3.3.0
cpp98/Broker.hpp
1 /*
2 Copyright (c) 2017-2022,
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_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 
18 namespace helicscpp {
19 class 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
56 
57  Broker(Broker&& brk) HELICS_NOTHROW: broker(brk.broker)
58  {
59  brk.broker = HELICS_NULL_POINTER;
60  }
62  Broker& operator=(Broker&& brk) HELICS_NOTHROW
63  {
64  broker = brk.broker;
65  brk.broker = HELICS_NULL_POINTER;
66  return *this;
67  }
68 #endif
69 
70  virtual ~Broker()
71  {
72  if (broker != HELICS_NULL_POINTER) {
74  }
75  }
77  operator HelicsBroker()
78  {
79  return broker;
80  }
84  {
85  return broker;
86  }
88  bool isConnected() const
89  {
91  }
96  bool waitForDisconnect(int msToWait = -1)
97  {
99  }
102  void disconnect()
103  {
105  }
107  const char* getIdentifier() const
108  {
110  }
112  const char* getAddress() const
113  {
115  }
116 
125  void setGlobal(const std::string& valueName, const std::string& value)
126  {
127  helicsBrokerSetGlobal(broker, valueName.c_str(), value.c_str(), hThrowOnError());
128  }
132  void dataLink(const std::string& source, const std::string& target)
133  {
134  helicsBrokerDataLink(broker, source.c_str(), target.c_str(), hThrowOnError());
135  }
140  void addSourceFilterToEndpoint(const std::string& filter, const std::string& target)
141  {
143  filter.c_str(),
144  target.c_str(),
145  hThrowOnError());
146  }
151  void addDestinationFilterToEndpoint(const std::string& filter, const std::string& target)
152  {
154  filter.c_str(),
155  target.c_str(),
156  hThrowOnError());
157  }
158 
172  std::string query(const std::string& target,
173  const std::string& queryStr,
175  {
176  // returns HelicsQuery
177  HelicsQuery q = helicsCreateQuery(target.c_str(), queryStr.c_str());
178  if (mode != HELICS_SEQUENCING_MODE_FAST) {
179  helicsQuerySetOrdering(q, mode, HELICS_IGNORE_ERROR);
180  }
181  std::string result(helicsQueryBrokerExecute(q, broker, hThrowOnError()));
182  helicsQueryFree(q);
183  return result;
184  }
185 
190  void sendCommand(const std::string& target, const std::string& command)
191  {
192  helicsBrokerSendCommand(broker, target.c_str(), command.c_str(), hThrowOnError());
193  }
194 
195  void setTimeBarrier(HelicsTime barrierTime)
196  {
197  helicsBrokerSetTimeBarrier(broker, barrierTime, HELICS_IGNORE_ERROR);
198  }
199 
200  void clearTimeBarrier()
201  {
203  }
204 
205  void globalError(int errorCode, const std::string& errorString)
206  {
207  helicsBrokerGlobalError(broker, errorCode, errorString.c_str(), HELICS_IGNORE_ERROR);
208  }
209 
210  protected:
212 };
213 
214 } // namespace helicscpp
215 #endif
helicscpp::Broker::waitForDisconnect
bool waitForDisconnect(int msToWait=-1)
Definition: cpp98/Broker.hpp:96
helicscpp::Broker::isConnected
bool isConnected() const
Definition: cpp98/Broker.hpp:88
HelicsTime
double HelicsTime
Definition: api-data.h:100
HELICS_FALSE
const HelicsBool HELICS_FALSE
Definition: api-data.h:115
helicscpp::Broker::operator=
Broker & operator=(const Broker &brk)
Definition: cpp98/Broker.hpp:50
HELICS_TRUE
const HelicsBool HELICS_TRUE
Definition: api-data.h:114
helicsQuerySetOrdering
void helicsQuerySetOrdering(HelicsQuery query, int32_t mode, HelicsError *err)
Definition: helicsExport.cpp:1189
helicscpp::Broker::baseObject
HelicsBroker baseObject() const
Definition: cpp98/Broker.hpp:83
helicsBrokerSetTimeBarrier
void helicsBrokerSetTimeBarrier(HelicsBroker broker, HelicsTime barrierTime, HelicsError *err)
Definition: helicsExport.cpp:618
helicsBrokerClone
HelicsBroker helicsBrokerClone(HelicsBroker broker, HelicsError *err)
Definition: helicsExport.cpp:516
helicsBrokerIsConnected
HelicsBool helicsBrokerIsConnected(HelicsBroker broker)
Definition: helicsExport.cpp:539
helicscpp::Broker
Definition: cpp98/Broker.hpp:19
helicscpp::Broker::addDestinationFilterToEndpoint
void addDestinationFilterToEndpoint(const std::string &filter, const std::string &target)
Definition: cpp98/Broker.hpp:151
helicsQueryFree
void helicsQueryFree(HelicsQuery query)
Definition: helicsExport.cpp:1198
helicsBrokerSendCommand
void helicsBrokerSendCommand(HelicsBroker broker, const char *target, const char *command, HelicsError *err)
Definition: helicsExport.cpp:591
helicscpp::Broker::dataLink
void dataLink(const std::string &source, const std::string &target)
Definition: cpp98/Broker.hpp:132
helicsBrokerFree
void helicsBrokerFree(HelicsBroker broker)
Definition: helicsExport.cpp:934
helicsBrokerGetIdentifier
const char * helicsBrokerGetIdentifier(HelicsBroker broker)
Definition: helicsExport.cpp:783
helicsBrokerDisconnect
void helicsBrokerDisconnect(HelicsBroker broker, HelicsError *err)
Definition: helicsExport.cpp:890
helicsBrokerClearTimeBarrier
void helicsBrokerClearTimeBarrier(HelicsBroker broker)
Definition: helicsExport.cpp:627
HelicsBroker
void * HelicsBroker
Definition: api-data.h:60
helicscpp::Broker::Broker
Broker(std::string type, std::string name, int argc, char **argv)
Definition: cpp98/Broker.hpp:42
helicscpp::Broker::getAddress
const char * getAddress() const
Definition: cpp98/Broker.hpp:112
helicscpp::Broker::Broker
Broker(std::string type, std::string name, std::string initString)
Definition: cpp98/Broker.hpp:28
helicsCreateBrokerFromArgs
HelicsBroker helicsCreateBrokerFromArgs(const char *type, const char *name, int argc, const char *const *argv, HelicsError *err)
Definition: helicsExport.cpp:483
helicscpp::hThrowOnError
Definition: helicsExceptions.hpp:38
HelicsSequencingModes
HelicsSequencingModes
Definition: helics_enums.h:395
helicscpp::Broker::sendCommand
void sendCommand(const std::string &target, const std::string &command)
Definition: cpp98/Broker.hpp:190
helicscpp::Broker::Broker
Broker() HELICS_NOTHROW
Definition: cpp98/Broker.hpp:22
helicscpp::Broker::query
std::string query(const std::string &target, const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) const
Definition: cpp98/Broker.hpp:172
helicsCreateBroker
HelicsBroker helicsCreateBroker(const char *type, const char *name, const char *initString, HelicsError *err)
Definition: helicsExport.cpp:455
helicsBrokerAddDestinationFilterToEndpoint
void helicsBrokerAddDestinationFilterToEndpoint(HelicsBroker broker, const char *filter, const char *endpoint, HelicsError *err)
Definition: helicsExport.cpp:667
helicscpp::Broker::addSourceFilterToEndpoint
void addSourceFilterToEndpoint(const std::string &filter, const std::string &target)
Definition: cpp98/Broker.hpp:140
HELICS_SEQUENCING_MODE_FAST
@ HELICS_SEQUENCING_MODE_FAST
Definition: helics_enums.h:397
helicsQueryBrokerExecute
const char * helicsQueryBrokerExecute(HelicsQuery query, HelicsBroker broker, HelicsError *err)
Definition: helicsExport.cpp:1076
helicscpp::Broker::Broker
Broker(const Broker &brk)
Definition: cpp98/Broker.hpp:48
helicscpp::Broker::getIdentifier
const char * getIdentifier() const
Definition: cpp98/Broker.hpp:107
helicsBrokerAddSourceFilterToEndpoint
void helicsBrokerAddSourceFilterToEndpoint(HelicsBroker broker, const char *filter, const char *endpoint, HelicsError *err)
Definition: helicsExport.cpp:654
helicscpp::Broker::~Broker
virtual ~Broker()
Definition: cpp98/Broker.hpp:70
helicsBrokerWaitForDisconnect
HelicsBool helicsBrokerWaitForDisconnect(HelicsBroker broker, int msToWait, HelicsError *err)
Definition: helicsExport.cpp:870
helicsCreateQuery
HelicsQuery helicsCreateQuery(const char *target, const char *query)
Definition: helicsExport.cpp:1012
helicsBrokerSetGlobal
void helicsBrokerSetGlobal(HelicsBroker broker, const char *valueName, const char *value, HelicsError *err)
Definition: helicsExport.cpp:578
helicsBrokerGlobalError
void helicsBrokerGlobalError(HelicsBroker broker, int errorCode, const char *errorString, HelicsError *err)
Definition: helicsExport.cpp:636
helicscpp::Broker::setGlobal
void setGlobal(const std::string &valueName, const std::string &value)
Definition: cpp98/Broker.hpp:125
HelicsQuery
void * HelicsQuery
Definition: api-data.h:77
helicscpp::Broker::broker
HelicsBroker broker
underlying broker information
Definition: cpp98/Broker.hpp:211
helicsBrokerGetAddress
const char * helicsBrokerGetAddress(HelicsBroker broker)
Definition: helicsExport.cpp:804
helicscpp::Broker::disconnect
void disconnect()
Definition: cpp98/Broker.hpp:102
helicscpp
Definition: cpp98/Broker.hpp:18
helicsBrokerDataLink
void helicsBrokerDataLink(HelicsBroker broker, const char *source, const char *target, HelicsError *err)
Definition: helicsExport.cpp:550