 |
helics
3.3.0
|
9 #include "LocalFederateId.hpp"
23 constexpr IdentifierBaseType gGlobalBrokerIdShift{0x7000'0000};
33 constexpr
explicit GlobalBrokerId(BaseType val) noexcept: gid(val) {}
35 constexpr BaseType
baseValue()
const {
return gid; }
43 constexpr
bool isFederate()
const
48 constexpr
bool isValid()
const
50 return (gid != invalid_global_broker_id && gid != detail::gInvalidInterfaceHandle);
52 BaseType localIndex()
const
58 BaseType gid = invalid_global_broker_id;
59 friend class GlobalFederateId;
60 static constexpr BaseType invalid_global_broker_id{-2
'010'000
'000};
64 constexpr GlobalBrokerId parent_broker_id{0};
66 constexpr GlobalBrokerId gRootBrokerID{1};
70 std::ostream& operator<<(std::ostream& os, GlobalBrokerId id);
72 class GlobalFederateId {
74 using BaseType = IdentifierBaseType;
76 constexpr GlobalFederateId() = default;
78 constexpr explicit GlobalFederateId(BaseType val) noexcept: gid(val) {}
80 constexpr GlobalFederateId(GlobalBrokerId id) noexcept: gid(id.gid) {} // NOLINT
82 constexpr operator GlobalBrokerId() const noexcept { return GlobalBrokerId{gid}; } // NOLINT
84 constexpr BaseType baseValue() const { return gid; }
86 constexpr bool operator==(GlobalFederateId id) const noexcept { return (gid == id.gid); }
88 constexpr bool operator!=(GlobalFederateId id) const noexcept { return (gid != id.gid); }
90 constexpr bool operator<(GlobalFederateId id) const noexcept { return (gid < id.gid); }
92 constexpr bool operator>(GlobalFederateId id) const noexcept { return (gid > id.gid); }
94 constexpr bool operator==(GlobalBrokerId id) const noexcept { return (gid == id.gid); }
96 constexpr bool operator!=(GlobalBrokerId id) const noexcept { return (gid != id.gid); }
98 constexpr bool operator<(GlobalBrokerId id) const noexcept { return (gid < id.gid); }
100 constexpr bool operator>(GlobalBrokerId id) const noexcept { return (gid > id.gid); }
102 constexpr bool isFederate() const
104 return ((gid >= gGlobalFederateIdShift) && (gid < gGlobalBrokerIdShift));
107 constexpr bool isBroker() const { return (gid >= gGlobalBrokerIdShift || gid == 1); }
109 constexpr bool isValid() const
111 return (gid != invalid_global_fed_id && gid != detail::gInvalidInterfaceHandle);
115 constexpr BaseType localIndex() const
117 return (gid >= gGlobalFederateIdShift) ? (gid - gGlobalFederateIdShift) : gid;
121 BaseType* getBaseTypePointer() { return &gid; }
124 static constexpr BaseType invalid_global_fed_id{-2'010
'000'000};
125 BaseType gid{invalid_global_fed_id};
132 GlobalBrokerId::BaseType index)
141 std::ostream&
operator<<(std::ostream& os, GlobalFederateId
id);
154 explicit operator uint64_t()
const
157 key +=
static_cast<uint64_t
>(
handle.
baseValue()) & (0x0000
'0000'FFFF
'FFFF);
161 constexpr bool operator==(GlobalHandle id) const noexcept
163 return ((fed_id == id.fed_id) && (handle == id.handle));
166 constexpr bool operator!=(GlobalHandle id) const noexcept
168 return ((fed_id != id.fed_id) || (handle != id.handle));
171 constexpr bool operator<(GlobalHandle id) const noexcept
173 return (fed_id < id.fed_id) ? true : ((fed_id != id.fed_id) ? false : (handle < id.handle));
176 constexpr bool isValid() const { return fed_id.isValid() && handle.isValid(); }
181 std::ostream& operator<<(std::ostream& os, GlobalHandle id);
186 using BaseType = IdentifierBaseType;
188 constexpr route_id() = default;
190 constexpr explicit route_id(BaseType val) noexcept: rid(val) {}
192 constexpr BaseType baseValue() const { return rid; }
194 constexpr bool operator==(route_id id) const noexcept { return (rid == id.rid); }
196 constexpr bool operator!=(route_id id) const noexcept { return (rid != id.rid); }
198 constexpr bool operator<(route_id id) const noexcept { return (rid < id.rid); }
200 constexpr bool isValid() const { return (rid != invalid_route_id); }
203 static constexpr BaseType invalid_route_id{-1'295
'148'000};
204 BaseType rid{invalid_route_id};
207 constexpr route_id parent_route_id{0};
208 constexpr route_id control_route{-1};
210 constexpr route_id generateRouteId(int32_t route_type_code, int32_t index)
212 return route_id(route_type_code * 256 * 256 * 256 + index);
215 constexpr int32_t getRouteTypeCode(route_id rid)
217 return (rid.baseValue() >> 24);
220 constexpr int32_t normal_route_code{0};
221 constexpr int32_t json_route_code{10};
224 std::ostream&
operator<<(std::ostream& os, route_id
id);
238 return std::hash<helics::GlobalFederateId::BaseType>{}(key.baseValue());
251 return std::hash<helics::GlobalBrokerId::BaseType>{}(key.baseValue());
264 return std::hash<helics::route_id::BaseType>{}(key.baseValue());
278 return std::hash<uint64_t>{}(
static_cast<uint64_t
>(key));
constexpr GlobalFederateId gDirectCoreId
Definition: GlobalFederateId.hpp:128
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:84
std::ostream & operator<<(std::ostream &os, const ActionMessage &command)
Definition: ActionMessage.cpp:919
std::size_t result_type
typedef for output result
Definition: GlobalFederateId.hpp:247
constexpr GlobalBrokerId()=default
constexpr IdentifierBaseType gGlobalBrokerIdShift
Definition: GlobalFederateId.hpp:23
constexpr GlobalHandle(GlobalFederateId fed, InterfaceHandle hand)
Definition: GlobalFederateId.hpp:151
Definition: LocalFederateId.hpp:65
result_type operator()(argument_type const &key) const noexcept
Definition: GlobalFederateId.hpp:276
constexpr BaseType baseValue() const
Definition: GlobalFederateId.hpp:35
Definition: GlobalFederateId.hpp:72
std::size_t result_type
typedef for output result
Definition: GlobalFederateId.hpp:260
InterfaceHandle handle
the interface handle component
Definition: GlobalFederateId.hpp:147
result_type operator()(argument_type const &key) const noexcept
Definition: GlobalFederateId.hpp:249
constexpr GlobalBrokerId gRootBrokerID
Definition: GlobalFederateId.hpp:66
Definition: GlobalFederateId.hpp:184
std::size_t result_type
typedef for output result
Definition: GlobalFederateId.hpp:274
int32_t IdentifierBaseType
Definition: LocalFederateId.hpp:15
result_type operator()(argument_type const &key) const noexcept
Definition: GlobalFederateId.hpp:262
std::size_t result_type
typedef for output result
Definition: GlobalFederateId.hpp:234
Definition: GlobalFederateId.hpp:27
constexpr bool operator<(GlobalBrokerId id) const noexcept
Definition: GlobalFederateId.hpp:41
constexpr BaseType baseValue() const
Definition: LocalFederateId.hpp:73
constexpr GlobalFederateId getSpecialFederateId(GlobalBrokerId broker, GlobalBrokerId::BaseType index)
Definition: GlobalFederateId.hpp:131
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
constexpr bool operator!=(GlobalBrokerId id) const noexcept
Definition: GlobalFederateId.hpp:39
constexpr GlobalHandle()=default
constexpr IdentifierBaseType gGlobalFederateIdShift
Definition: GlobalFederateId.hpp:21
Definition: GlobalFederateId.hpp:144
constexpr bool operator==(GlobalBrokerId id) const noexcept
Definition: GlobalFederateId.hpp:37
GlobalFederateId fed_id
the federate id component
Definition: GlobalFederateId.hpp:146
result_type operator()(argument_type const &key) const noexcept
Definition: GlobalFederateId.hpp:236