![]() |
helics
3.0.1
|
#include <CoreBroker.hpp>
Public Member Functions | |
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, std::string_view, std::string_view)> &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, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) override final |
virtual void | setGlobal (const std::string &valueName, const std::string &value) override final |
virtual void | sendCommand (const std::string &target, const std::string &commandStr, HelicsSequencingModes mode) override final |
virtual void | makeConnections (const std::string &file) override final |
virtual void | linkEndpoints (const std::string &source, const std::string &target) 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 |
![]() | |
Broker ()=default | |
virtual | ~Broker ()=default |
![]() | |
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 level, std::string_view identifier, std::string_view message)> logFunction) |
void | logFlush () |
bool | isRunning () const |
void | setLogLevel (int32_t level) |
void | setLogLevels (int32_t consoleLevel, int32_t fileLevel) |
GlobalBrokerId | 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 void | transmit (route_id route, const ActionMessage &command)=0 |
virtual void | transmit (route_id route, ActionMessage &&command)=0 |
virtual void | addRoute (route_id rid, int interfaceId, const std::string &routeInfo)=0 |
virtual void | removeRoute (route_id rid)=0 |
virtual std::shared_ptr< helicsCLI11App > | generateCLI () override |
![]() | |
void | setTickForwarding (TickForwardingReasons reason, bool value=true) |
BrokerState | getBrokerState () const |
bool | setBrokerState (BrokerState newState) |
bool | transitionBrokerState (BrokerState expectedState, BrokerState newState) |
virtual bool | tryReconnect ()=0 |
virtual bool | sendToLogger (GlobalFederateId federateID, int logLevel, std::string_view name, std::string_view message) const |
void | saveProfilingData (std::string_view message) |
void | writeProfilingData () |
void | generateNewIdentifier () |
virtual std::string | generateLocalAddressString () const =0 |
void | setErrorState (int eCode, std::string_view estring) |
void | setLoggingFile (const std::string &lfile) |
bool | getFlagValue (int32_t flag) const |
virtual double | getSimulationTime () const |
Protected Attributes | |
bool | _gateway = false |
set to true if this broker should act as a gateway. | |
![]() | |
std::atomic< GlobalBrokerId > | global_id {parent_broker_id} |
GlobalBrokerId | global_broker_id_local {} |
GlobalBrokerId | higher_broker_id {0} |
the id code of the broker 1 level about this broker | |
std::atomic< int32_t > | maxLogLevel {HELICS_LOG_LEVEL_WARNING} |
int32_t | consoleLogLevel {HELICS_LOG_LEVEL_WARNING} |
the logging level for console display | |
int32_t | fileLogLevel {HELICS_LOG_LEVEL_WARNING} |
the logging level for logging to a file | |
int32_t | minFederateCount {1} |
int32_t | minBrokerCount {0} |
int32_t | maxFederateCount {(std::numeric_limits<int32_t>::max)()} |
int32_t | maxBrokerCount {(std::numeric_limits<int32_t>::max)()} |
int32_t | minChildCount {0} |
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 | |
Time | grantTimeout {-1.0} |
timeout for triggering diagnostic action waiting for a time grant | |
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, std::string_view, std::string_view)> | loggerFunction |
std::atomic< bool > | haltOperations {false} |
flag indicating that no further message should be processed | |
bool | restrictive_time_policy {false} |
flag indicating the broker should use a conservative time policy | |
bool | terminate_on_error {false} |
flag indicating that the federation should halt on any error | |
bool | debugging {false} |
flag indicating operation in a user debugging mode | |
bool | observer {false} |
flag indicating that the broker is an observer only | |
std::string | logFile |
the file to log message to | |
std::unique_ptr< ForwardingTimeCoordinator > | timeCoord |
object managing the time control | |
gmlc::containers::BlockingPriorityQueue< ActionMessage > | actionQueue |
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 | |
Friends | |
class | TimeoutMonitor |
Additional Inherited Members | |
![]() | |
enum | BrokerState : int16_t { BrokerState::created = -6, BrokerState::configuring = -5, BrokerState::configured = -4, BrokerState::connecting = -3, BrokerState::connected = -2, BrokerState::initializing = -1, BrokerState::operating = 0, BrokerState::terminating = 1, BrokerState::terminated = 3, BrokerState::errored = 7 } |
enum | TickForwardingReasons : uint32_t { NONE = 0, NO_COMMS = 0x01, PING_RESPONSE = 0x02, QUERY_TIMEOUT = 0x04 } |
![]() | |
static bool | isReasonForTick (std::uint32_t code, TickForwardingReasons reason) |
![]() | |
static constexpr double | mInvalidSimulationTime {-98763.2} |
class implementing most of the functionality of a generic broker Basically acts as a router for information, deals with stuff internally if it can and sends higher up if it can't or does something else if it is the root of the tree
|
explicitnoexcept |
default constructor
setAsRootBroker | set to true to indicate this object is a root broker |
|
explicit |
constructor to set the name of the broker
|
virtual |
destructor
|
finaloverridevirtual |
create a filter connection between a named filter and a named endpoint for destination processing
filter | the name of the filter |
target | the name of the source target |
Implements helics::Broker.
References helics::BrokerBase::addActionMessage(), destination_target, helics::ActionMessage::name(), and setActionFlag().
|
protectedpure virtual |
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
rid | the identification of the route |
interfaceId | an 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 |
routeInfo | a string containing the information necessary to connect |
Implemented in helics::MultiBroker.
|
finaloverridevirtual |
create a filter connection between a named filter and a named endpoint for messages coming from that endpoint
filter | the name of the filter |
target | the name of the source target |
Implements helics::Broker.
References helics::BrokerBase::addActionMessage(), and helics::ActionMessage::name().
bool helics::CoreBroker::allInitReady | ( | ) | const |
check if all the local federates are ready to be initialized
References getAllConnectionState(), helics::BrokerBase::global_broker_id_local, helics::BrokerBase::minBrokerCount, helics::BrokerBase::minChildCount, and helics::BrokerBase::minFederateCount.
|
finaloverridevirtual |
update a time barrier with a new time
Implements helics::Broker.
References helics::ActionMessage::actionTime, helics::BrokerBase::addActionMessage(), cancel_flag, helics::BrokerBase::global_id, setActionFlag(), and helics::ActionMessage::source_id.
Referenced by setTimeBarrier().
|
finaloverridevirtual |
start up the broker with an initialization string containing commands and parameters
Implements helics::Broker.
References helics::BrokerBase::configureBase(), helics::BrokerBase::configuring, helics::BrokerBase::created, and helics::BrokerBase::parseArgs().
|
finaloverridevirtual |
initialize from command line arguments
Implements helics::Broker.
References helics::BrokerBase::configureBase(), helics::BrokerBase::configuring, helics::BrokerBase::created, and helics::BrokerBase::parseArgs().
|
finaloverridevirtual |
initialize from command line arguments in a vector
Implements helics::Broker.
References helics::BrokerBase::configureBase(), helics::BrokerBase::configuring, helics::BrokerBase::created, and helics::BrokerBase::parseArgs().
|
finaloverridevirtual |
connect the core to its broker
should be done after initialization has complete
Implements helics::Broker.
References helics::BrokerBase::configured, helics::BrokerBase::connected, and helics::BrokerBase::connecting.
|
finaloverridevirtual |
create a data Link between a named publication and a named input
source | the name of the publication |
target | the name of the input |
Implements helics::Broker.
References helics::BrokerBase::addActionMessage(), and helics::ActionMessage::name().
|
finaloverridevirtual |
disconnect the broker from any other brokers and communications
Implements helics::Broker.
References helics::BrokerBase::addActionMessage(), and waitForDisconnect().
|
overrideprotectedvirtual |
generate a CLI11 Application for subprocesses for processing of command line arguments
Reimplemented from helics::BrokerBase.
Reimplemented in helics::tcp::TcpBrokerSS, helics::NetworkBroker< COMMS, baseline, tcode >, helics::NetworkBroker< ZmqCommsSS, InterfaceTypes::TCP, 1 >, helics::NetworkBroker< ZmqComms, InterfaceTypes::TCP, 1 >, helics::NetworkBroker< TcpCommsSS, InterfaceTypes::TCP, static_cast< int >(CoreType::TCP_SS)>, and helics::mpi::MpiBroker.
References setAsRoot().
Referenced by helics::mpi::MpiBroker::generateCLI().
|
finaloverridevirtual |
get the connection address for the broker
Implements helics::Broker.
References helics::BrokerBase::address, helics::BrokerBase::connected, and helics::BrokerBase::generateLocalAddressString().
Referenced by helics::mpi::MpiBroker::~MpiBroker().
connection_state helics::CoreBroker::getAllConnectionState | ( | ) | const |
get a value for the summary connection status of all the connected systems
Referenced by allInitReady().
|
inlinefinaloverridevirtual |
get the local identification for the broker
Implements helics::Broker.
References helics::BrokerBase::identifier.
Referenced by helics::MultiBroker::generateLocalAddressString(), query(), sendCommand(), and helics::TimeoutMonitor::tick().
|
finaloverridevirtual |
generate a global error and halt the federation
errorCode | the code to use for the error |
errorString | the error message to associate with the error |
Implements helics::Broker.
References helics::BrokerBase::addActionMessage(), helics::BrokerBase::getGlobalId(), helics::ActionMessage::messageID, helics::ActionMessage::payload, and helics::ActionMessage::source_id.
|
finaloverridevirtual |
check if the broker is connected
Implements helics::Broker.
References helics::BrokerBase::connected, and helics::BrokerBase::operating.
Referenced by helics::TimeoutMonitor::tick().
|
overridevirtual |
check if the broker is ready to accept new federates or cores
Implements helics::Broker.
References helics::BrokerBase::created, helics::BrokerBase::haltOperations, and helics::BrokerBase::operating.
|
inlinefinaloverridevirtual |
return true if the broker is a root broker
Implements helics::Broker.
Referenced by helics::TimeoutMonitor::tick().
|
finaloverridevirtual |
create a data Link between two endpoints sending data from source to destination
source | the name of the endpoint to send from |
target | the name of the endpoint to send the data to |
Implements helics::Broker.
References helics::BrokerBase::addActionMessage(), and helics::ActionMessage::name().
|
finaloverridevirtual |
load a file containing connection information
file | a JSON or TOML file containing connection information |
Implements helics::Broker.
|
finaloverridevirtual |
disconnect the broker from any other brokers and communications if the flag is set it should not do the unregister step of the disconnection, if this is set it is presumed the unregistration has already happened or it will be taken care of manually
Implements helics::BrokerBase.
References helics::BrokerBase::configured, helics::BrokerBase::terminated, and helics::BrokerBase::terminating.
Referenced by helics::TimeoutMonitor::tick().
|
finaloverridevirtual |
make a query for information from the co-simulation
the format is somewhat unspecified target is the name of an object typically one of "federation", "broker", or the name of a specific object query is a broken
target | the specific target of the query |
queryStr | the actual query |
mode | fast (asynchronous; default) means the query goes on priority channels, ordered (synchronous) is slower but has more ordering guarantees |
Implements helics::Broker.
References helics::BrokerBase::addActionMessage(), helics::ActionMessage::dest_id, helics::generateJsonErrorResponse(), getIdentifier(), helics::BrokerBase::global_id, HELICS_SEQUENCING_MODE_FAST, helics::ActionMessage::messageID, helics::ActionMessage::payload, and helics::ActionMessage::source_id.
|
protectedpure virtual |
remove or disconnect a route from use
rid | the identification of the route |
Implemented in helics::MultiBroker.
|
finaloverridevirtual |
send a command to a specific target
the format is somewhat unspecified; target is the name of an object, typically one of "federation","root", "broker", "core", or the name of a specific object/core/broker
target | the specific target of the command |
commandStr | the actual command |
mode | fast (asynchronous; default) means the command goes on priority channels, ordered (synchronous) is slower but has more ordering guarantees |
Implements helics::Broker.
References getIdentifier(), helics::BrokerBase::global_id, HELICS_SEQUENCING_MODE_ORDERED, helics::ActionMessage::payload, and helics::ActionMessage::source_id.
|
finaloverridevirtual |
set the broker to be a root broker
only valid before the initialization function is called
Implements helics::Broker.
References helics::BrokerBase::connected, and helics::BrokerBase::global_id.
Referenced by generateCLI().
|
finaloverridevirtual |
set a federation global value
this overwrites any previous value for this name globals can be queried with a target of "global" or "global_value" and queryStr of the value to Query
valueName | the name of the global to set |
value | the value of the global |
Implements helics::Broker.
References helics::BrokerBase::global_id, helics::ActionMessage::payload, and helics::ActionMessage::source_id.
void helics::CoreBroker::setIdentifier | ( | const std::string & | name | ) |
set the local identification string for the broker
References helics::BrokerBase::connecting, and helics::BrokerBase::identifier.
|
finaloverridevirtual |
set the broker logging file
Implements helics::Broker.
References helics::BrokerBase::setLoggingFile().
|
finaloverridevirtual |
set the logging callback function
logFunction | a function with a signature of void(int level, const std::string &source, const std::string &message) the function takes a level indicating the logging level string with the source name and a string with the message |
Implements helics::Broker.
References helics::BrokerBase::actionQueue, helics::ActionMessage::counter, empty_flag, helics::BrokerBase::global_id, helics::ActionMessage::messageID, setActionFlag(), and helics::ActionMessage::source_id.
|
finaloverridevirtual |
|
finaloverridevirtual |
update a time barrier with a new time
Implements helics::Broker.
References helics::ActionMessage::actionTime, helics::BrokerBase::addActionMessage(), clearTimeBarrier(), helics::BrokerBase::global_id, and helics::ActionMessage::source_id.
|
protectedpure virtual |
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
route | -the identifier for the routing information |
command | the actionMessage to transmit |
Implemented in helics::MultiBroker.
|
protectedpure virtual |
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
route | -the identifier for the routing information |
command | the actionMessage to transmit |
Implemented in helics::MultiBroker.
Referenced by helics::TimeoutMonitor::pingSub(), and helics::TimeoutMonitor::tick().
void helics::CoreBroker::unregister | ( | ) |
unregister the broker from the factory find methods
References helics::BrokerFactory::findBroker(), helics::BrokerBase::identifier, and helics::BrokerFactory::unregisterBroker().
|
finaloverridevirtual |
waits in the current thread until the broker is disconnected
msToWait | the timeout to wait for disconnect |
Implements helics::Broker.
Referenced by disconnect().