9 #include "CommsInterface.hpp"
10 #include "helics/helics-config.h"
24 int findOpenPort(
int count, std::string_view host =
"localhost");
25 void setStartingPortNumber(
int startPort) { startingPort = startPort; }
26 int getDefaultStartingPort()
const {
return startingPort; }
27 void addUsedPort(
int port);
28 void addUsedPort(std::string_view host,
int port);
31 int startingPort = -1;
32 std::map<std::string_view, std::set<int>> usedPort;
33 std::map<std::string_view, int> nextPorts;
34 bool isPortUsed(std::string_view host,
int port)
const;
35 std::set<std::string> hosts;
36 std::string_view addNewHost(std::string_view newHost);
56 virtual void setFlag(std::string_view flag,
bool val)
override;
69 const gmlc::networking::InterfaceTypes networkType;
70 gmlc::networking::InterfaceNetworks network{gmlc::networking::InterfaceNetworks::IPV4};
71 std::atomic<bool> hasBroker{
false};
75 PortAllocator openPorts;
Definition: ActionMessage.hpp:30
Definition: CommsInterface.hpp:25
thread_generation
Definition: CommsInterface.hpp:29
@ dual
indicate that separate threads are used, 1 for transmission and 1 for reception
Definition: NetworkBrokerData.hpp:23
Definition: NetworkCommsInterface.hpp:18
bool encrypted
Definition: NetworkCommsInterface.hpp:65
ActionMessage generateReplyToIncomingMessage(ActionMessage &cmd)
Definition: NetworkCommsInterface.cpp:225
void setPortNumber(int localPortNumber)
Definition: NetworkCommsInterface.cpp:189
NetworkCommsInterface(gmlc::networking::InterfaceTypes type, CommsInterface::thread_generation threads=CommsInterface::thread_generation::dual) noexcept
Definition: NetworkCommsInterface.cpp:22
int getPortNumber() const
Definition: NetworkCommsInterface.hpp:52
bool useOsPortAllocation
use the operating system to allocate a port number
Definition: NetworkCommsInterface.hpp:62
int brokerPort
standardized broker port to use for connection to the brokers
Definition: NetworkCommsInterface.hpp:59
bool forceConnection
Definition: NetworkCommsInterface.hpp:68
void setAutomaticPortStartPort(int startingPort)
Definition: NetworkCommsInterface.cpp:200
int getPort() const
Definition: NetworkCommsInterface.hpp:85
bool autoPortNumber
use an automatic port numbering based on broker responses
Definition: NetworkCommsInterface.hpp:61
void setBrokerPort(int brokerPortNumber)
Definition: NetworkCommsInterface.cpp:169
std::string getAddress() const
Definition: NetworkCommsInterface.cpp:259
virtual int getDefaultBrokerPort() const =0
bool noAckConnection
flag to bypass the connection acknowledge requirement
Definition: NetworkCommsInterface.hpp:64
std::atomic< int > PortNumber
port to use for the local connection
Definition: NetworkCommsInterface.hpp:60
virtual void setFlag(std::string_view flag, bool val) override
Definition: NetworkCommsInterface.cpp:208
virtual void loadNetworkInfo(const NetworkBrokerData &netInfo) override
Definition: NetworkCommsInterface.cpp:96
bool appendNameToAddress
flag to append the name to the network address
Definition: NetworkCommsInterface.hpp:63
int findOpenPort(int count, std::string_view host)
Definition: NetworkCommsInterface.cpp:177
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14