helics
3.5.2
|
#include <NetworkCommsInterface.hpp>
Public Member Functions | |
NetworkCommsInterface (gmlc::networking::InterfaceTypes type, CommsInterface::thread_generation threads=CommsInterface::thread_generation::dual) noexcept | |
virtual void | loadNetworkInfo (const NetworkBrokerData &netInfo) override |
void | setBrokerPort (int brokerPortNumber) |
void | setPortNumber (int localPortNumber) |
int | getPortNumber () const |
void | setAutomaticPortStartPort (int startingPort) |
virtual void | setFlag (std::string_view flag, bool val) override |
int | findOpenPort (int count, std::string_view host) |
ActionMessage | generateReplyToIncomingMessage (ActionMessage &cmd) |
int | getPort () const |
std::string | getAddress () const |
virtual int | getDefaultBrokerPort () const =0 |
Public Member Functions inherited from helics::CommsInterface | |
CommsInterface ()=default | |
CommsInterface (thread_generation threads) | |
virtual | ~CommsInterface () |
void | loadTargetInfo (std::string_view localTarget, std::string_view brokerTarget, gmlc::networking::InterfaceNetworks targetNetwork=gmlc::networking::InterfaceNetworks::LOCAL) |
void | transmit (route_id rid, const ActionMessage &cmd) |
void | transmit (route_id rid, ActionMessage &&cmd) |
void | addRoute (route_id rid, std::string_view routeInfo) |
void | removeRoute (route_id rid) |
bool | connect () |
void | disconnect () |
bool | reconnect () |
void | setName (const std::string &commName) |
void | setRequireBrokerConnection (bool requireBrokerConnection) |
void | setCallback (std::function< void(ActionMessage &&)> callback) |
void | setLoggingCallback (std::function< void(int level, std::string_view name, std::string_view message)> callback) |
void | setMessageSize (int maxMsgSize, int maxCount) |
bool | isConnected () const |
void | setTimeout (std::chrono::milliseconds timeOut) |
void | setServerMode (bool serverActive) |
void | logWarning (std::string_view message) const |
void | logError (std::string_view message) const |
void | logMessage (std::string_view message) const |
Protected Member Functions | |
ActionMessage | generatePortRequest (int cnt=1) const |
void | loadPortDefinitions (const ActionMessage &cmd) |
Protected Member Functions inherited from helics::CommsInterface | |
void | setTxStatus (ConnectionStatus status) |
void | setRxStatus (ConnectionStatus status) |
ConnectionStatus | getRxStatus () const |
ConnectionStatus | getTxStatus () const |
bool | propertyLock () |
void | propertyUnLock () |
void | join_tx_rx_thread () |
const std::string & | getRandomID () const |
Protected Attributes | |
int | brokerPort {-1} |
standardized broker port to use for connection to the brokers | |
std::atomic< int > | PortNumber {-1} |
port to use for the local connection | |
bool | autoPortNumber {true} |
use an automatic port numbering based on broker responses | |
bool | useOsPortAllocation {false} |
use the operating system to allocate a port number | |
bool | appendNameToAddress {false} |
flag to append the name to the network address | |
bool | noAckConnection {false} |
flag to bypass the connection acknowledge requirement | |
bool | encrypted {false} |
bool | forceConnection {false} |
const gmlc::networking::InterfaceTypes | networkType |
gmlc::networking::InterfaceNetworks | network {gmlc::networking::InterfaceNetworks::IPV4} |
std::atomic< bool > | hasBroker {false} |
int | maxRetries {5} |
Protected Attributes inherited from helics::CommsInterface | |
gmlc::concurrency::TriggerVariable | rxTrigger |
std::string | name |
the name of the object | |
std::string | localTargetAddress |
the base for the receive address | |
std::string | brokerTargetAddress |
the base for the broker address | |
std::string | brokerName |
std::string | brokerInitString |
the initialization string for any automatically generated broker | |
bool | mRequireBrokerConnection |
specify that the comms should assume we have a broker More... | |
bool | serverMode {true} |
some comms have a server mode and non-server mode | |
bool | autoBroker {false} |
the broker should be automatically generated if needed | |
bool | useJsonSerialization {false} |
true to make all connections use JSON serialization | |
bool | observer {false} |
true for connections that are for observation only | |
std::chrono::milliseconds | connectionTimeout {4000} |
int | maxMessageSize = 16 * 1024 |
the maximum message size for the queues (if needed) | |
int | maxMessageCount = 512 |
the maximum number of message to buffer (if needed) | |
std::atomic< bool > | requestDisconnect {false} |
flag gets set when disconnect is called | |
std::function< void(ActionMessage &&)> | ActionCallback |
the callback for what to do with a received message | |
std::function< void(int level, std::string_view name, std::string_view message)> | loggingCallback |
callback for logging | |
gmlc::containers::BlockingPriorityQueue< std::pair< route_id, ActionMessage > > | txQueue |
set of messages waiting to be transmitted | |
std::atomic< bool > | disconnecting |
flag indicating that the comm system is in the process of disconnecting More... | |
gmlc::networking::InterfaceNetworks | interfaceNetwork |
Additional Inherited Members | |
Public Types inherited from helics::CommsInterface | |
enum class | thread_generation { single , dual } |
Protected Types inherited from helics::CommsInterface | |
enum class | ConnectionStatus : int { STARTUP = -1 , CONNECTED = 0 , RECONNECTING = 1 , TERMINATED = 2 , ERRORED = 4 } |
implementation for the communication interface that uses ZMQ messages to communicate
|
explicitnoexcept |
default constructor
int helics::NetworkCommsInterface::findOpenPort | ( | int | count, |
std::string_view | host | ||
) |
find an open port for a subBroker
References getDefaultBrokerPort(), and PortNumber.
Referenced by generateReplyToIncomingMessage().
ActionMessage helics::NetworkCommsInterface::generateReplyToIncomingMessage | ( | ActionMessage & | cmd | ) |
for protocol messages some require an immediate reply from the comms interface itself
References helics::ActionMessage::counter, findOpenPort(), helics::isProtocolCommand(), helics::ActionMessage::messageID, helics::ActionMessage::name(), PortNumber, helics::ActionMessage::setExtraData(), and helics::ActionMessage::source_id.
std::string helics::NetworkCommsInterface::getAddress | ( | ) | const |
get the network address of the comms interface
References appendNameToAddress, helics::CommsInterface::localTargetAddress, helics::CommsInterface::name, PortNumber, and helics::CommsInterface::serverMode.
Referenced by helics::MultiBroker::generateLocalAddressString().
|
pure virtual |
return the default Broker port
Referenced by findOpenPort().
|
inline |
get the port number of the comms object to push message to
References PortNumber.
|
inline |
get the local port number to use for incoming connections
References PortNumber.
|
overridevirtual |
load network information into the comms interface object
load network information into the comms object
Reimplemented from helics::CommsInterface.
Reimplemented in helics::zeromq::ZmqCommsSS, helics::zeromq::ZmqComms, helics::udp::UdpComms, helics::tcp::TcpCommsSS, and helics::tcp::TcpComms.
References helics::NetworkBrokerData::appendNameToAddress, appendNameToAddress, autoPortNumber, helics::NetworkBrokerData::brokerPort, brokerPort, helics::CommsInterface::brokerTargetAddress, helics::NetworkBrokerData::connectionPort, encrypted, forceConnection, helics::CommsInterface::loadNetworkInfo(), helics::CommsInterface::localTargetAddress, helics::NetworkBrokerData::maxRetries, helics::CommsInterface::mRequireBrokerConnection, helics::NetworkBrokerData::noAckConnection, noAckConnection, helics::NetworkBrokerData::portNumber, PortNumber, helics::NetworkBrokerData::portStart, helics::CommsInterface::propertyLock(), helics::NetworkBrokerData::use_os_port, helics::CommsInterface::useJsonSerialization, helics::NetworkBrokerData::useJsonSerialization, and useOsPortAllocation.
Referenced by helics::tcp::TcpComms::loadNetworkInfo(), helics::tcp::TcpCommsSS::loadNetworkInfo(), helics::udp::UdpComms::loadNetworkInfo(), helics::zeromq::ZmqComms::loadNetworkInfo(), and helics::zeromq::ZmqCommsSS::loadNetworkInfo().
void helics::NetworkCommsInterface::setAutomaticPortStartPort | ( | int | startingPort | ) |
set the automatic port numbering starting port
References helics::CommsInterface::propertyLock().
void helics::NetworkCommsInterface::setBrokerPort | ( | int | brokerPortNumber | ) |
set the port numbers for the local ports
References brokerPort, and helics::CommsInterface::propertyLock().
|
overridevirtual |
set a flag on the communication system
Reimplemented from helics::CommsInterface.
Reimplemented in helics::tcp::TcpCommsSS, and helics::tcp::TcpComms.
References noAckConnection, helics::CommsInterface::propertyLock(), helics::CommsInterface::setFlag(), and useOsPortAllocation.
Referenced by helics::tcp::TcpComms::setFlag(), and helics::tcp::TcpCommsSS::setFlag().
void helics::NetworkCommsInterface::setPortNumber | ( | int | localPortNumber | ) |
set the local port number to use for incoming connections
References autoPortNumber, PortNumber, and helics::CommsInterface::propertyLock().
|
protected |
enable encryption if applicable
Referenced by loadNetworkInfo(), helics::tcp::TcpComms::setFlag(), and helics::tcp::TcpCommsSS::setFlag().
|
protected |
if enabled will attempt to force the server connection and terminate any existing connections
Referenced by loadNetworkInfo().