helics 3.7.0
Loading...
Searching...
No Matches
MultiBroker.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#pragma once
9#include "../core/CoreBroker.hpp"
10#include "../network/NetworkBroker.hpp"
11
12#include <memory>
13#include <string>
14#include <utility>
15#include <vector>
16
17namespace helics {
18class ActionMessage;
19class CommsInterface;
20
21// small function to call to force symbol linkages
22bool allowMultiBroker();
23
26class MultiBroker: public CoreBroker {
27 protected:
28 std::atomic<int> disconnectionStage{0};
29 std::vector<std::unique_ptr<CommsInterface>> comms;
31 std::unique_ptr<CommsInterface> masterComm;
33 NetworkBrokerData netInfo{gmlc::networking::InterfaceTypes::TCP};
34 std::string configFile;
35 std::atomic<bool> brokerInitialized{false};
37 std::vector<std::pair<route_id, int>> routingTable; // index of the routes
38 public:
40 MultiBroker() noexcept;
41
45 explicit MultiBroker(std::string_view brokerName);
46
48 ~MultiBroker();
49
50 private:
51 virtual bool brokerConnect() override;
52 virtual void brokerDisconnect() override;
53 virtual bool tryReconnect() override;
55 virtual std::shared_ptr<helicsCLI11App> generateCLI() override;
56
57 protected:
59 virtual std::string generateLocalAddressString() const override;
60
61 public:
62 virtual void transmit(route_id rid, const ActionMessage& cmd) override;
63 virtual void transmit(route_id rid, ActionMessage&& cmd) override;
64
65 virtual void addRoute(route_id rid, int interfaceId, std::string_view routeInfo) override;
66
67 virtual void removeRoute(route_id rid) override;
68};
69} // namespace helics
Definition ActionMessage.hpp:30
Definition CoreBroker.hpp:98
Definition MultiBroker.hpp:26
std::vector< std::unique_ptr< CommsInterface > > comms
Definition MultiBroker.hpp:29
std::atomic< int > disconnectionStage
the stage of disconnection
Definition MultiBroker.hpp:28
std::unique_ptr< CommsInterface > masterComm
the primary comms object or the one that links with the master
Definition MultiBroker.hpp:31
std::string configFile
the name of the config file in use
Definition MultiBroker.hpp:34
NetworkBrokerData netInfo
structure containing the networking information
Definition MultiBroker.hpp:33
virtual void removeRoute(route_id rid) override
Definition MultiBroker.cpp:296
virtual void transmit(route_id rid, const ActionMessage &cmd) override
Definition MultiBroker.cpp:239
std::atomic< bool > brokerInitialized
atomic protecting local initialization
Definition MultiBroker.hpp:35
virtual std::string generateLocalAddressString() const override
Definition MultiBroker.cpp:221
virtual void addRoute(route_id rid, int interfaceId, std::string_view routeInfo) override
Definition MultiBroker.cpp:281
MultiBroker() noexcept
Definition MultiBroker.cpp:72
CoreType type
the core type of the master controller
Definition MultiBroker.hpp:36
Definition NetworkBrokerData.hpp:23
Definition helicsCLI11.hpp:50
Definition GlobalFederateId.hpp:187
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition AsyncFedCallInfo.hpp:14
CoreType
Definition CoreTypes.hpp:46
@ MULTI
use the multi-broker
STL namespace.