helics  2.8.1
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
helics::MultiBroker Class Reference

#include <MultiBroker.hpp>

+ Inheritance diagram for helics::MultiBroker:

Public Member Functions

 MultiBroker () noexcept
 
 MultiBroker (const std::string &brokerName)
 
 ~MultiBroker ()
 
virtual void transmit (route_id rid, const ActionMessage &cmd) override
 
virtual void transmit (route_id rid, ActionMessage &&cmd) override
 
virtual void addRoute (route_id rid, int interfaceId, const std::string &routeInfo) override
 
virtual void removeRoute (route_id rid) override
 
- Public Member Functions inherited from helics::CoreBroker
virtual bool connect () override final
 
virtual void disconnect () override final
 
void unregister ()
 
virtual void processDisconnect (bool skipUnregister=false) override final
 
virtual bool isConnected () const override final
 
virtual void setAsRoot () override final
 
virtual bool isRoot () const override final
 
virtual bool isOpenToNewFederates () const override
 
virtual void setLoggingCallback (const std::function< void(int, const std::string &, const std::string &)> &logFunction) override final
 
virtual bool waitForDisconnect (std::chrono::milliseconds msToWait=std::chrono::milliseconds(0)) const override final
 
virtual void setTimeBarrier (Time barrierTime) override final
 
virtual void clearTimeBarrier () override final
 
virtual void globalError (int32_t errorCode, const std::string &errorString) override final
 
 CoreBroker (bool setAsRootBroker=false) noexcept
 
 CoreBroker (const std::string &broker_name)
 
virtual ~CoreBroker ()
 
virtual void configure (const std::string &configureString) override final
 
virtual void configureFromArgs (int argc, char *argv[]) override final
 
virtual void configureFromVector (std::vector< std::string > args) override final
 
bool allInitReady () const
 
connection_state getAllConnectionState () const
 
void setIdentifier (const std::string &name)
 
virtual const std::string & getIdentifier () const override final
 
virtual const std::string & getAddress () const override final
 
virtual void setLoggingLevel (int logLevel) override final
 
virtual void setLogFile (const std::string &lfile) override final
 
virtual std::string query (const std::string &target, const std::string &queryStr, helics_sequencing_mode mode=helics_sequencing_mode_fast) override final
 
virtual void setGlobal (const std::string &valueName, const std::string &value) override final
 
virtual void makeConnections (const std::string &file) override final
 
virtual void dataLink (const std::string &publication, const std::string &input) override final
 
virtual void addSourceFilterToEndpoint (const std::string &filter, const std::string &endpoint) override final
 
virtual void addDestinationFilterToEndpoint (const std::string &filter, const std::string &endpoint) override final
 
- Public Member Functions inherited from helics::Broker
 Broker ()=default
 
virtual ~Broker ()=default
 
void initialize (const std::string &configureString)
 
void initializeFromArgs (int argc, char *argv[])
 
- Public Member Functions inherited from helics::BrokerBase
 BrokerBase (bool DisableQueue=false) noexcept
 
 BrokerBase (const std::string &broker_name, bool DisableQueue=false)
 
int parseArgs (int argc, char *argv[])
 
int parseArgs (std::vector< std::string > args)
 
int parseArgs (const std::string &initializationString)
 
virtual void configureBase ()
 
void addActionMessage (const ActionMessage &m)
 
void addActionMessage (ActionMessage &&m)
 
void setLoggerFunction (std::function< void(int, const std::string &, const std::string &)> logFunction)
 
void logFlush ()
 
bool isRunning () const
 
void setLogLevel (int32_t level)
 
void setLogLevels (int32_t consoleLevel, int32_t fileLevel)
 
global_broker_id getGlobalId () const
 
std::function< void(int, const std::string &, const std::string &)> getLoggingCallback () const
 
void joinAllThreads ()
 
std::size_t currentMessageCounter () const
 

Protected Member Functions

virtual std::string generateLocalAddressString () const override
 
- Protected Member Functions inherited from helics::BrokerBase
void setTickForwarding (TickForwardingReasons reason, bool value=true)
 
broker_state_t getBrokerState () const
 
bool setBrokerState (broker_state_t newState)
 
bool transitionBrokerState (broker_state_t expectedState, broker_state_t newState)
 
virtual bool sendToLogger (global_federate_id federateID, int logLevel, const std::string &name, const std::string &message) const
 
void saveProfilingData (const std::string &message)
 
void writeProfilingData ()
 
void generateNewIdentifier ()
 
void setErrorState (int eCode, const std::string &estring)
 
void setLoggingFile (const std::string &lfile)
 
bool getFlagValue (int32_t flag) const
 

Protected Attributes

std::atomic< int > disconnectionStage {0}
 the stage of disconnection
 
std::vector< std::unique_ptr< CommsInterface > > comms
 the actual comms objects
 
std::unique_ptr< CommsInterfacemasterComm
 the primary comms object or the one that links with the master
 
NetworkBrokerData netInfo
 structure containing the networking information More...
 
std::string configFile
 the name of the config file in use
 
std::atomic< bool > brokerInitialized {false}
 atomic protecting local initialization
 
core_type type {core_type::MULTI}
 the core type of the master controller
 
std::vector< std::pair< route_id, int > > routingTable
 
- Protected Attributes inherited from helics::CoreBroker
bool _gateway = false
 set to true if this broker should act as a gateway.
 
- Protected Attributes inherited from helics::BrokerBase
std::atomic< global_broker_idglobal_id
 the unique identifier for the broker(core or broker) More...
 
global_broker_id global_broker_id_local {}
 
global_broker_id higher_broker_id {0}
 the id code of the broker 1 level about this broker
 
std::atomic< int32_t > maxLogLevel
 the logging level to use levels >=this will be ignored More...
 
int32_t consoleLogLevel {1}
 the logging level for console display
 
int32_t fileLogLevel {1}
 the logging level for logging to a file
 
int32_t minFederateCount
 the minimum number of federates that must connect before entering init mode More...
 
int32_t minBrokerCount
 the minimum number of brokers that must connect before entering init mode More...
 
int32_t maxFederateCount {(std::numeric_limits<int32_t>::max)()}
 
int32_t maxBrokerCount {(std::numeric_limits<int32_t>::max)()}
 
int32_t maxIterationCount {10000}
 the maximum number of iterative loops that are allowed
 
Time tickTimer {5.0}
 the length of each heartbeat tick
 
Time timeout {30.0}
 timeout to wait to establish a broker connection before giving up
 
Time networkTimeout {-1.0}
 timeout to establish a socket connection before giving up
 
Time queryTimeout {15.0}
 
Time errorDelay {10.0}
 time to delay before terminating after error state
 
std::string identifier
 an identifier for the broker
 
std::string brokerKey
 
std::string address
 network location of the broker
 
std::shared_ptr< spdlog::logger > consoleLogger
 default logging object to use if the logging callback is not specified
 
std::shared_ptr< spdlog::logger > fileLogger
 default logging object to use if the logging callback is not specified
 
std::thread queueProcessingThread
 thread for running the broker
 
std::function< void(int, const std::string &, const std::string &)> loggerFunction
 
std::atomic< bool > haltOperations
 flag indicating that no further message should be processed More...
 
bool restrictive_time_policy
 flag indicating the broker should use a conservative time policy More...
 
bool terminate_on_error
 flag indicating that the federation should halt on any error More...
 
bool debugging {false}
 flag indicating operation in a user debugging mode
 
std::string logFile
 the file to log message to
 
std::unique_ptr< ForwardingTimeCoordinatortimeCoord
 object managing the time control
 
gmlc::containers::BlockingPriorityQueue< ActionMessageactionQueue
 primary routing queue
 
bool noAutomaticID {false}
 the broker should not automatically generate an ID
 
bool hasTimeDependency {false}
 set to true if the broker has Time dependencies
 
bool enteredExecutionMode
 flag indicating that the broker has entered execution mode More...
 
bool waitingForBrokerPingReply {false}
 flag indicating we are waiting for a ping reply
 
bool hasFilters {false}
 flag indicating filters come through the broker
 
bool no_ping {false}
 indicator that the broker is not very responsive to ping requests
 
bool uuid_like {false}
 will be set to true if the name looks like a uuid
 
bool useJsonSerialization {false}
 
bool enable_profiling {false}
 indicator that profiling is enabled
 
decltype(std::chrono::steady_clock::now()) errorTimeStart
 time when the error condition started related to the errorDelay
 
std::atomic< int > lastErrorCode {0}
 storage for last error code
 
std::string lastErrorString
 storage for last error string
 

Additional Inherited Members

- Protected Types inherited from helics::BrokerBase
enum  broker_state_t : int16_t {
  broker_state_t::created = -6, broker_state_t::configuring = -5, broker_state_t::configured = -4, broker_state_t::connecting = -3,
  broker_state_t::connected = -2, broker_state_t::initializing = -1, broker_state_t::operating = 0, broker_state_t::terminating = 1,
  broker_state_t::terminated = 3, broker_state_t::errored = 7
}
 
enum  TickForwardingReasons : uint32_t { none = 0, no_comms = 0x01, ping_response = 0x02, query_timeout = 0x04 }
 
- Static Protected Member Functions inherited from helics::BrokerBase
static bool isReasonForTick (std::uint32_t code, TickForwardingReasons reason)
 

Detailed Description

helper class defining some common functionality for brokers and cores that use different communication methods

Constructor & Destructor Documentation

◆ MultiBroker() [1/2]

helics::MultiBroker::MultiBroker ( )
noexcept

default constructor

◆ MultiBroker() [2/2]

helics::MultiBroker::MultiBroker ( const std::string &  brokerName)
explicit

construct from command line arguments

Parameters
brokerNamethe name of the broker

◆ ~MultiBroker()

helics::MultiBroker::~MultiBroker ( )

Member Function Documentation

◆ addRoute()

void helics::MultiBroker::addRoute ( route_id  rid,
int  interfaceId,
const std::string &  routeInfo 
)
overridevirtual

add a route to the type specific routing information and establish the connection

add a route to a table, the connection information is contained in the string with the described identifier

Parameters
ridthe identification of the route
interfaceIdan interface id code that can be used to identify the interface route should be added to, in most cases this should be zero since there is only one interface
routeInfoa string containing the information necessary to connect

Implements helics::CoreBroker.

References comms, helics::isValidIndex(), and masterComm.

◆ generateLocalAddressString()

std::string helics::MultiBroker::generateLocalAddressString ( ) const
overrideprotectedvirtual

◆ removeRoute()

void helics::MultiBroker::removeRoute ( route_id  rid)
overridevirtual

remove or disconnect a route from use

Parameters
ridthe identification of the route

Implements helics::CoreBroker.

◆ transmit() [1/2]

void helics::MultiBroker::transmit ( route_id  route,
ActionMessage &&  command 
)
overridevirtual

this function is the one that will change for various flavors of broker communication

it takes a route info- a code of where to send the data and an action message and proceeds to transmit it to the appropriate location, this variant does a move operation instead of copy

Parameters
route-the identifier for the routing information
commandthe actionMessage to transmit

Implements helics::CoreBroker.

References comms, and masterComm.

◆ transmit() [2/2]

void helics::MultiBroker::transmit ( route_id  route,
const ActionMessage command 
)
overridevirtual

this function is the one that will change for various flavors of broker communication

it takes a route info- a code of where to send the data and an action message and proceeds to transmit it to the appropriate location

Parameters
route-the identifier for the routing information
commandthe actionMessage to transmit

Implements helics::CoreBroker.

References comms, and masterComm.

Member Data Documentation

◆ netInfo

NetworkBrokerData helics::MultiBroker::netInfo
protected
Initial value:

structure containing the networking information


The documentation for this class was generated from the following files:
helics::interface_type::tcp
@ tcp
using tcp ports for communication