helics  3.3.0
TimeoutMonitor.h
1 /*
2 Copyright (c) 2017-2022,
3 Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable
4 Energy, LLC. See the top-level NOTICE for additional details. All rights reserved.
5 SPDX-License-Identifier: BSD-3-Clause
6 */
7 #pragma once
8 #include "GlobalFederateId.hpp"
9 
10 #include <chrono>
11 #include <vector>
12 
13 namespace helics {
14 class CommonCore;
15 class CoreBroker;
16 class ActionMessage;
17 
20  bool waitingForPingReply{false};
21  bool activeConnection{false};
22  bool disablePing{false};
24  decltype(std::chrono::steady_clock::now()) lastPing;
25 };
28  public:
30  void tick(CommonCore* core);
32  void tick(CoreBroker* brk);
34  void pingReply(const ActionMessage& cmd, CoreBroker* brk = nullptr);
36  void setTimeout(std::chrono::milliseconds to) { timeout = to; }
38  void reset();
40  void pingSub(CoreBroker* brk);
42  void setParentId(GlobalBrokerId parent_id) { parentConnection.connection = parent_id; }
44  void disableParentPing(bool value = true)
45  {
46  parentConnection.disablePing = value;
47  parentConnection.waitingForPingReply = false;
48  }
49 
50  private:
51  std::chrono::milliseconds timeout{100'000'000};
52  bool waitingForConnection{false};
53  decltype(std::chrono::steady_clock::now()) startWaiting;
54  linkConnection parentConnection;
55  std::vector<linkConnection> connections;
56 
57  // int tickCounter;
58 };
59 
60 } // namespace helics
helics::CommonCore::processCommand
virtual void processCommand(ActionMessage &&command) override final
Definition: CommonCore.cpp:3238
helics::indicator_flag
@ indicator_flag
flag used for setting values
Definition: flagOperations.hpp:18
helics::linkConnection::disablePing
bool disablePing
indicator that the connection doesn't respond to pings
Definition: TimeoutMonitor.h:22
helics::BrokerBase::higher_broker_id
GlobalBrokerId higher_broker_id
the id code of the broker 1 level about this broker
Definition: BrokerBase.hpp:49
helics::ERROR_LEVEL
@ ERROR_LEVEL
only print errors
Definition: logging.hpp:23
helics::TimeoutMonitor::setTimeout
void setTimeout(std::chrono::milliseconds to)
Definition: TimeoutMonitor.h:36
helics::CommonCore
Definition: CommonCore.hpp:74
helics::CommonCore::getIdentifier
virtual const std::string & getIdentifier() const override final
Definition: CommonCore.cpp:187
loggingHelper.hpp
helics::BrokerBase::sendToLogger
bool sendToLogger(GlobalFederateId federateID, int logLevel, std::string_view name, std::string_view message, bool fromRemote=false) const
Definition: BrokerBase.cpp:343
helics::BrokerBase::global_id
std::atomic< GlobalBrokerId > global_id
Definition: BrokerBase.hpp:46
helics::GlobalFederateId
Definition: GlobalFederateId.hpp:72
helics::ActionMessage
Definition: ActionMessage.hpp:30
helics::parent_broker_id
constexpr GlobalBrokerId parent_broker_id
Definition: GlobalFederateId.hpp:64
helics::linkConnection::connection
GlobalFederateId connection
the id of the connection
Definition: TimeoutMonitor.h:23
helics::CoreBroker::transmit
virtual void transmit(route_id route, const ActionMessage &command)=0
helics::CoreBroker::getIdentifier
virtual const std::string & getIdentifier() const override final
Definition: CoreBroker.hpp:297
helics::linkConnection::activeConnection
bool activeConnection
indicator that the connection is active
Definition: TimeoutMonitor.h:21
helics::BrokerBase::addActionMessage
void addActionMessage(const ActionMessage &m)
Definition: BrokerBase.cpp:551
helics::CoreBroker::isRoot
virtual bool isRoot() const override final
Definition: CoreBroker.hpp:217
helics::ActionMessage::messageID
int32_t messageID
8 – message ID for a variety of purposes
Definition: ActionMessage.hpp:36
helics::setActionFlag
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:130
helics::CoreBroker::isConnected
virtual bool isConnected() const override final
Definition: CoreBroker.cpp:2292
helics::TimeoutMonitor::setParentId
void setParentId(GlobalBrokerId parent_id)
Definition: TimeoutMonitor.h:42
helics::linkConnection::waitingForPingReply
bool waitingForPingReply
indicator that the connection is waiting
Definition: TimeoutMonitor.h:20
helics::GlobalBrokerId
Definition: GlobalFederateId.hpp:27
helics::linkConnection
Definition: TimeoutMonitor.h:19
helics::ActionMessage::dest_id
GlobalFederateId dest_id
20 fed_id for a targeted message
Definition: ActionMessage.hpp:39
helics::CommonCore::transmit
virtual void transmit(route_id rid, const ActionMessage &command)=0
helics::BrokerBase::BrokerState::TERMINATED
@ TERMINATED
the termination process has started
helics::BrokerBase::BrokerState::ERRORED
@ ERRORED
an error was encountered
helics
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
helics::TimeoutMonitor::tick
void tick(CommonCore *core)
Definition: TimeoutMonitor.cpp:19
helics::TimeoutMonitor::disableParentPing
void disableParentPing(bool value=true)
Definition: TimeoutMonitor.h:44
helics::TimeoutMonitor::pingSub
void pingSub(CoreBroker *brk)
Definition: TimeoutMonitor.cpp:176
helics::TimeoutMonitor
Definition: TimeoutMonitor.h:27
helics::TimeoutMonitor::pingReply
void pingReply(const ActionMessage &cmd, CoreBroker *brk=nullptr)
Definition: TimeoutMonitor.cpp:230
helics::CoreBroker
Definition: CoreBroker.hpp:93
helics::TimeoutMonitor::reset
void reset()
Definition: TimeoutMonitor.cpp:221
helics::CommonCore::isConnected
virtual bool isConnected() const override final
Definition: CommonCore.cpp:180
helics::ActionMessage::source_id
GlobalFederateId source_id
12 – for federate_id or route_id
Definition: ActionMessage.hpp:37
helics::BrokerBase::global_broker_id_local
GlobalBrokerId global_broker_id_local
Definition: BrokerBase.hpp:47