 |
helics
2.8.1
|
Go to the documentation of this file.
14 #include "ActionMessage.hpp"
15 #include "federate_id_extra.hpp"
16 #include "gmlc/containers/BlockingPriorityQueue.hpp"
29 class ForwardingTimeCoordinator;
49 int32_t maxFederateCount{(std::numeric_limits<int32_t>::max)()};
50 int32_t maxBrokerCount{(std::numeric_limits<int32_t>::max)()};
65 std::shared_ptr<spdlog::logger>
67 std::shared_ptr<spdlog::logger>
71 std::function<void(
int,
const std::string&,
const std::string&)>
loggerFunction;
81 std::atomic<bool> mainLoopIsRunning{
84 std::atomic<bool> forceLoggingFlush{
false};
87 bool disable_timer{
false};
89 std::atomic<std::size_t> messageCounter{
93 std::unique_ptr<ForwardingTimeCoordinator>
timeCoord;
94 gmlc::containers::BlockingPriorityQueue<ActionMessage>
actionQueue;
112 enum class TickForwardingReasons : uint32_t {
115 ping_response = 0x02,
130 decltype(std::chrono::steady_clock::now())
136 std::shared_ptr<ProfilerBuffer> prBuff;
139 bool forwardTick{
false};
141 uint32_t forwardingReasons{0U};
146 explicit BrokerBase(
bool DisableQueue =
false) noexcept;
147 explicit BrokerBase(const std::
string& broker_name,
bool DisableQueue = false);
149 virtual ~BrokerBase();
157 int parseArgs(std::vector<std::
string> args);
161 int parseArgs(const std::
string& initializationString);
177 std::function<
void(
int, const std::
string&, const std::
string&)> logFunction);
181 bool isRunning()
const {
return mainLoopIsRunning.load(); }
188 void setLogLevels(int32_t consoleLevel, int32_t fileLevel);
194 void queueProcessingLoop();
200 std::shared_ptr<helicsCLI11App> generateBaseCLI();
202 void generateLoggers();
210 return ((
static_cast<std::uint32_t
>(reason) & code) != 0);
214 broker_state_t getBrokerState()
const {
return brokerState.load(); }
235 virtual bool sendToLogger(global_federate_id federateID,
237 const std::string& name,
238 const std::string& message)
const;
250 virtual std::shared_ptr<helicsCLI11App>
generateCLI();
260 std::function<void(
int,
const std::string&,
const std::string&)>
getLoggingCallback()
const;
266 return messageCounter.load(std::memory_order_acquire);
constexpr Time timeZero
Definition: helics-time.hpp:31
void joinAllThreads()
Definition: BrokerBase.cpp:91
@ configuring
the broker is in the processing of configuring
@ terminated
the termination process has started
bool isRunning() const
Definition: BrokerBase.hpp:181
int32_t minBrokerCount
the minimum number of brokers that must connect before entering init mode
Definition: BrokerBase.hpp:47
void setLoggerFunction(std::function< void(int, const std::string &, const std::string &)> logFunction)
Definition: BrokerBase.cpp:513
@ errored
an error was encountered
bool useJsonSerialization
Definition: BrokerBase.hpp:128
std::string brokerKey
Definition: BrokerBase.hpp:59
Time timeout
timeout to wait to establish a broker connection before giving up
Definition: BrokerBase.hpp:53
static std::shared_ptr< AsioContextManager > getContextPointer(const std::string &contextName=std::string())
Definition: AsioContextManager.cpp:38
bool noAutomaticID
the broker should not automatically generate an ID
Definition: BrokerBase.hpp:118
bool enable_profiling
indicator that profiling is enabled
Definition: BrokerBase.hpp:129
action_t
Definition: ActionMessageDefintions.hpp:20
virtual bool tryReconnect()=0
Definition: BrokerBase.cpp:636
Definition: global_federate_id.hpp:26
bool hasTimeDependency
set to true if the broker has Time dependencies
Definition: BrokerBase.hpp:119
@ helics_log_level_summary
Definition: helics_enums.h:171
@ operating
normal operating conditions
bool getFlagValue(int32_t flag) const
Definition: BrokerBase.cpp:501
@ warning
print/log warning and errors
Definition: loggingHelper.hpp:23
Definition: global_federate_id.hpp:68
std::thread queueProcessingThread
thread for running the broker
Definition: BrokerBase.hpp:69
global_broker_id getGlobalId() const
Definition: BrokerBase.hpp:190
@ terminating
the termination process has started
constexpr global_broker_id parent_broker_id
Definition: global_federate_id.hpp:60
void setErrorState(int eCode, const std::string &estring)
Definition: BrokerBase.cpp:468
TimeRepresentation< count_time< 9 > > Time
Definition: helics-time.hpp:27
bool hasFilters
flag indicating filters come through the broker
Definition: BrokerBase.hpp:123
broker_state_t
Definition: BrokerBase.hpp:99
Definition: ActionMessage.hpp:29
int32_t maxIterationCount
the maximum number of iterative loops that are allowed
Definition: BrokerBase.hpp:51
bool uuid_like
will be set to true if the name looks like a uuid
Definition: BrokerBase.hpp:126
int32_t fileLogLevel
the logging level for logging to a file
Definition: BrokerBase.hpp:44
int parseArgs(int argc, char *argv[])
Definition: BrokerBase.cpp:299
@ helics_flag_force_logging_flush
Definition: helics_enums.h:155
std::atomic< bool > haltOperations
flag indicating that no further message should be processed
Definition: BrokerBase.hpp:73
std::atomic< int32_t > maxLogLevel
the logging level to use levels >=this will be ignored
Definition: BrokerBase.hpp:41
@ helics_log_level_warning
Definition: helics_enums.h:169
@ helics_flag_dumplog
Definition: helics_enums.h:157
virtual void configureBase()
Definition: BrokerBase.cpp:326
@ helics_log_level_trace
Definition: helics_enums.h:182
std::unique_ptr< ForwardingTimeCoordinator > timeCoord
object managing the time control
Definition: BrokerBase.hpp:93
@ configured
the broker itself has been configured and is ready to connect
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition: flagOperations.hpp:75
bool no_ping
indicator that the broker is not very responsive to ping requests
Definition: BrokerBase.hpp:125
virtual std::shared_ptr< helicsCLI11App > generateCLI()
Definition: BrokerBase.cpp:99
std::string lastErrorString
storage for last error string
Definition: BrokerBase.hpp:133
@ helics_log_level_connections
Definition: helics_enums.h:174
@ helics_log_level_error
Definition: helics_enums.h:167
void setLogLevel(int32_t level)
Definition: BrokerBase.cpp:519
void addActionMessage(const ActionMessage &m)
Definition: BrokerBase.cpp:544
Time errorDelay
time to delay before terminating after error state
Definition: BrokerBase.hpp:57
std::function< void(int, const std::string &, const std::string &)> getLoggingCallback() const
Definition: BrokerBase.cpp:84
virtual std::string generateLocalAddressString() const =0
@ connecting
the connection process has started
@ connected
the connection process has completed
virtual void processCommand(ActionMessage &&cmd)=0
@ helics_log_level_interfaces
Definition: helics_enums.h:176
@ created
the broker has been created
constexpr base_type baseValue() const
Definition: global_federate_id.hpp:83
std::atomic< global_broker_id > global_id
the unique identifier for the broker(core or broker)
Definition: BrokerBase.hpp:36
@ initializing
the enter initialization process has started
const friend std::string & brokerStateName(broker_state_t state)
Definition: BrokerBase.cpp:918
global_broker_id global_broker_id_local
Definition: BrokerBase.hpp:38
std::size_t currentMessageCounter() const
Definition: BrokerBase.hpp:264
@ indicator_flag
flag used for setting values
Definition: flagOperations.hpp:21
@ helics_log_level_data
Definition: helics_enums.h:180
@ fed
special logging command for message coming from a fed
Definition: loggingHelper.hpp:32
std::shared_ptr< spdlog::logger > fileLogger
default logging object to use if the logging callback is not specified
Definition: BrokerBase.hpp:68
bool enteredExecutionMode
flag indicating that the broker has entered execution mode
Definition: BrokerBase.hpp:120
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:67
bool terminate_on_error
flag indicating that the federation should halt on any error
Definition: BrokerBase.hpp:77
std::atomic< int > lastErrorCode
storage for last error code
Definition: BrokerBase.hpp:132
Time networkTimeout
timeout to establish a socket connection before giving up
Definition: BrokerBase.hpp:54
std::string prettyPrintString(const ActionMessage &command)
Definition: ActionMessage.cpp:861
const std::string & brokerStateName(BrokerBase::broker_state_t state)
Definition: BrokerBase.cpp:918
bool isDisconnectCommand(const ActionMessage &command) noexcept
Definition: ActionMessage.hpp:276
@ trace
trace level printing (all processed messages)
Definition: loggingHelper.hpp:31
void generateNewIdentifier()
Definition: BrokerBase.cpp:442
virtual void processPriorityCommand(ActionMessage &&command)=0
void writeProfilingData()
Definition: BrokerBase.cpp:457
@ error_flag
flag indicating an error condition associated with the command
Definition: flagOperations.hpp:20
@ helics_log_level_no_print
Definition: helics_enums.h:165
void setLoggingFile(const std::string &lfile)
Definition: BrokerBase.cpp:486
void setLogLevels(int32_t consoleLevel, int32_t fileLevel)
Definition: BrokerBase.cpp:537
@ helics_log_level_timing
Definition: helics_enums.h:178
Time tickTimer
the length of each heartbeat tick
Definition: BrokerBase.hpp:52
virtual void processDisconnect(bool skipUnregister=false)=0
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
bool debugging
flag indicating operation in a user debugging mode
Definition: BrokerBase.hpp:79
Time queryTimeout
Definition: BrokerBase.hpp:55
int32_t consoleLogLevel
the logging level for console display
Definition: BrokerBase.hpp:43
std::function< void(int, const std::string &, const std::string &)> loggerFunction
Definition: BrokerBase.hpp:71
void setTickForwarding(TickForwardingReasons reason, bool value=true)
Definition: BrokerBase.cpp:838
bool restrictive_time_policy
flag indicating the broker should use a conservative time policy
Definition: BrokerBase.hpp:75
bool waitingForBrokerPingReply
flag indicating we are waiting for a ping reply
Definition: BrokerBase.hpp:122
Definition: TimeoutMonitor.h:27
virtual bool sendToLogger(global_federate_id federateID, int logLevel, const std::string &name, const std::string &message) const
Definition: BrokerBase.cpp:359
void logFlush()
Definition: BrokerBase.cpp:524
static bool isReasonForTick(std::uint32_t code, TickForwardingReasons reason)
Definition: BrokerBase.hpp:208
std::shared_ptr< spdlog::logger > consoleLogger
default logging object to use if the logging callback is not specified
Definition: BrokerBase.hpp:66
global_broker_id higher_broker_id
the id code of the broker 1 level about this broker
Definition: BrokerBase.hpp:40
void saveProfilingData(const std::string &message)
Definition: BrokerBase.cpp:448
gmlc::containers::BlockingPriorityQueue< ActionMessage > actionQueue
primary routing queue
Definition: BrokerBase.hpp:94
int32_t minFederateCount
the minimum number of federates that must connect before entering init mode
Definition: BrokerBase.hpp:45
std::string identifier
an identifier for the broker
Definition: BrokerBase.hpp:58
HelicsConfigJSON * addJsonConfig(CLI::App *app)
Add the HELICS JSON configuration processor to the app.
Definition: helicsCLI11JsonConfig.cpp:96
Definition: BrokerBase.hpp:34
bool isPriorityCommand(const ActionMessage &command) noexcept
Definition: ActionMessage.hpp:232
std::string logFile
the file to log message to
Definition: BrokerBase.hpp:92
std::string address
network location of the broker
Definition: BrokerBase.hpp:64
decltype(std::chrono::steady_clock::now()) errorTimeStart
time when the error condition started related to the errorDelay
Definition: BrokerBase.hpp:131