helics  3.0.1
TimeoutMonitor.h
1 /*
2 Copyright (c) 2017-2021,
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:2915
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:41
helics::BrokerBase::sendToLogger
virtual bool sendToLogger(GlobalFederateId federateID, int logLevel, std::string_view name, std::string_view message) const
Definition: BrokerBase.cpp:396
helics::TimeoutMonitor::setTimeout
void setTimeout(std::chrono::milliseconds to)
Definition: TimeoutMonitor.h:36
helics::CommonCore
Definition: CommonCore.hpp:73
helics::CommonCore::getIdentifier
virtual const std::string & getIdentifier() const override final
Definition: CommonCore.cpp:179
loggingHelper.hpp
helics::BrokerBase::global_id
std::atomic< GlobalBrokerId > global_id
Definition: BrokerBase.hpp:38
helics::GlobalFederateId
Definition: GlobalFederateId.hpp:68
helics::ActionMessage
Definition: ActionMessage.hpp:30
helics::parent_broker_id
constexpr GlobalBrokerId parent_broker_id
Definition: GlobalFederateId.hpp:60
helics::linkConnection::connection
GlobalFederateId connection
the id of the connection
Definition: TimeoutMonitor.h:23
ERROR_LEVEL
@ ERROR_LEVEL
only print errors
Definition: loggingHelper.hpp:22
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:288
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:572
helics::CoreBroker::isRoot
virtual bool isRoot() const override final
Definition: CoreBroker.hpp:207
helics::CoreBroker::processDisconnect
virtual void processDisconnect(bool skipUnregister=false) override final
Definition: CoreBroker.cpp:2003
helics::ActionMessage::messageID
int32_t messageID
8 – message ID for a variety of purposes
Definition: ActionMessage.hpp:36
helics::CoreBroker::isConnected
virtual bool isConnected() const override final
Definition: CoreBroker.cpp:1988
indicator_flag
@ indicator_flag
flag used for setting values
Definition: flagOperations.hpp:21
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:26
helics::linkConnection
Definition: TimeoutMonitor.h:19
setActionFlag
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition: flagOperations.hpp:77
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
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:18
helics::TimeoutMonitor::disableParentPing
void disableParentPing(bool value=true)
Definition: TimeoutMonitor.h:44
helics::TimeoutMonitor::pingSub
void pingSub(CoreBroker *brk)
Definition: TimeoutMonitor.cpp:175
helics::CommonCore::processDisconnect
virtual void processDisconnect(bool skipUnregister=false) override final
Definition: CommonCore.cpp:192
helics::TimeoutMonitor
Definition: TimeoutMonitor.h:27
helics::TimeoutMonitor::pingReply
void pingReply(const ActionMessage &cmd, CoreBroker *brk=nullptr)
Definition: TimeoutMonitor.cpp:229
helics::CoreBroker
Definition: CoreBroker.hpp:95
helics::TimeoutMonitor::reset
void reset()
Definition: TimeoutMonitor.cpp:220
helics::CommonCore::isConnected
virtual bool isConnected() const override final
Definition: CommonCore.cpp:173
helics::BrokerBase::BrokerState::errored
@ errored
an error was encountered
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:39