helics 3.7.0
Loading...
Searching...
No Matches
cpp98/MessageFederate.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
8#ifndef HELICS_CPP98_MESSAGE_FEDERATE_HPP_
9#define HELICS_CPP98_MESSAGE_FEDERATE_HPP_
10#pragma once
11
12#include "Endpoint.hpp"
13#include "Federate.hpp"
14#include "helics/helics.h"
15
16#include <string>
17#include <vector>
18
19namespace helicscpp {
22class MessageFederate: public virtual Federate {
23 public:
29 MessageFederate(const std::string& fedName, FederateInfo& fedInfo)
30 {
31 fed = helicsCreateMessageFederate(fedName.c_str(), fedInfo.getInfo(), hThrowOnError());
32 }
33
37 explicit MessageFederate(const std::string& configString)
38 {
39 fed = helicsCreateMessageFederateFromConfig(configString.c_str(), hThrowOnError());
40 }
41
43 MessageFederate() HELICS_NOTHROW {}
44
53 Endpoint registerEndpoint(const std::string& name, const std::string& type = std::string())
54 {
56 helicsFederateRegisterEndpoint(fed, name.c_str(), type.c_str(), hThrowOnError());
57 local_endpoints.push_back(ep);
58 return Endpoint(ep);
59 }
60
66 Endpoint registerGlobalEndpoint(const std::string& name,
67 const std::string& type = std::string())
68 {
70 helicsFederateRegisterGlobalEndpoint(fed, name.c_str(), type.c_str(), hThrowOnError());
71 local_endpoints.push_back(ep);
72 return Endpoint(ep);
73 }
74
78 HELICS_NODISCARD Endpoint getEndpoint(const std::string& name)
79 {
80 return Endpoint(helicsFederateGetEndpoint(fed, name.c_str(), hThrowOnError()));
81 }
85 HELICS_NODISCARD Endpoint getEndpoint(int index)
86 {
88 }
89
91 HELICS_NODISCARD bool hasMessage() const
92 {
93 // returns int, 1 = true, 0 = false
94 return (helicsFederateHasMessage(fed) > 0);
95 }
96
98 HELICS_NODISCARD int pendingMessageCount() const
99 {
101 }
102
105
107 HELICS_NODISCARD Message createMessage()
108 {
110 }
113
114 private:
115 std::vector<HelicsEndpoint> local_endpoints;
116};
117// this code needs the definition of federate before it can de defined
118inline Message::Message(const Federate& fed):
119 mo(helicsFederateCreateMessage(fed.getObject(), hThrowOnError()))
120{
121}
122
124{
126 if (mo != HELICS_NULL_POINTER) {
128 }
129 mo = newmo;
130 return *this;
131}
132} // namespace helicscpp
133#endif
HelicsEndpoint helicsFederateRegisterGlobalEndpoint(HelicsFederate fed, const char *name, const char *type, HelicsError *err)
Definition MessageFederateExport.cpp:118
HelicsEndpoint helicsFederateRegisterEndpoint(HelicsFederate fed, const char *name, const char *type, HelicsError *err)
Definition MessageFederateExport.cpp:76
HelicsMessage helicsFederateGetMessage(HelicsFederate fed)
Definition MessageFederateExport.cpp:569
HelicsBool helicsFederateHasMessage(HelicsFederate fed)
Definition MessageFederateExport.cpp:436
int helicsFederateGetEndpointCount(HelicsFederate fed)
Definition MessageFederateExport.cpp:679
HelicsEndpoint helicsFederateGetEndpoint(HelicsFederate fed, const char *name, HelicsError *err)
Definition MessageFederateExport.cpp:161
HelicsMessage helicsFederateCreateMessage(HelicsFederate fed, HelicsError *err)
Definition MessageFederateExport.cpp:587
int helicsFederatePendingMessageCount(HelicsFederate fed)
Definition MessageFederateExport.cpp:454
HelicsEndpoint helicsFederateGetEndpointByIndex(HelicsFederate fed, int index, HelicsError *err)
Definition MessageFederateExport.cpp:184
void * HelicsEndpoint
Definition api-data.h:37
void * HelicsMessage
Definition api-data.h:100
Definition Endpoint.hpp:219
Definition cpp98/Federate.hpp:28
HELICS_NODISCARD HelicsFederateInfo getInfo()
Definition cpp98/Federate.hpp:163
Definition cpp98/Federate.hpp:229
HelicsFederate fed
underlying HelicsFederate object
Definition cpp98/Federate.hpp:913
HELICS_NODISCARD HelicsFederate getObject() const
Definition cpp98/Federate.hpp:910
Definition cpp98/MessageFederate.hpp:22
HELICS_NODISCARD Message createMessage()
Definition cpp98/MessageFederate.hpp:107
Endpoint registerEndpoint(const std::string &name, const std::string &type=std::string())
Definition cpp98/MessageFederate.hpp:53
MessageFederate(const std::string &configString)
Definition cpp98/MessageFederate.hpp:37
int getEndpointCount() const
Definition cpp98/MessageFederate.hpp:112
Message getMessage()
Definition cpp98/MessageFederate.hpp:104
HELICS_NODISCARD bool hasMessage() const
Definition cpp98/MessageFederate.hpp:91
Endpoint registerGlobalEndpoint(const std::string &name, const std::string &type=std::string())
Definition cpp98/MessageFederate.hpp:66
HELICS_NODISCARD Endpoint getEndpoint(int index)
Definition cpp98/MessageFederate.hpp:85
HELICS_NODISCARD int pendingMessageCount() const
Definition cpp98/MessageFederate.hpp:98
HELICS_NODISCARD Endpoint getEndpoint(const std::string &name)
Definition cpp98/MessageFederate.hpp:78
MessageFederate(const std::string &fedName, FederateInfo &fedInfo)
Definition cpp98/MessageFederate.hpp:29
MessageFederate() HELICS_NOTHROW
Definition cpp98/MessageFederate.hpp:43
Definition Endpoint.hpp:22
Message() HELICS_NOTHROW
Definition Endpoint.hpp:25
Message & newMessageObject(const Federate &fed)
Definition cpp98/MessageFederate.hpp:123
Definition helicsExceptions.hpp:38
void helicsMessageFree(HelicsMessage message)
Definition MessageFederateExport.cpp:1252
Definition cpp98/Broker.hpp:18