helics 3.7.0
Loading...
Searching...
No Matches
TimeoutMonitor.h
1/*
2Copyright (c) 2017-2026,
3Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Energy
4Innovation LLC. See the top-level NOTICE for additional details. All rights reserved.
5SPDX-License-Identifier: BSD-3-Clause
6*/
7#pragma once
8#include "GlobalFederateId.hpp"
9
10#include <chrono>
11#include <vector>
12
13namespace helics {
14class CommonCore;
15class CoreBroker;
16class 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
Definition ActionMessage.hpp:30
Definition CommonCore.hpp:74
Definition CoreBroker.hpp:98
Definition GlobalFederateId.hpp:30
Definition GlobalFederateId.hpp:75
Definition TimeoutMonitor.h:27
void reset()
Definition TimeoutMonitor.cpp:221
void disableParentPing(bool value=true)
Definition TimeoutMonitor.h:44
void setTimeout(std::chrono::milliseconds to)
Definition TimeoutMonitor.h:36
void pingSub(CoreBroker *brk)
Definition TimeoutMonitor.cpp:176
void tick(CommonCore *core)
Definition TimeoutMonitor.cpp:19
void pingReply(const ActionMessage &cmd, CoreBroker *brk=nullptr)
Definition TimeoutMonitor.cpp:230
void setParentId(GlobalBrokerId parent_id)
Definition TimeoutMonitor.h:42
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition AsyncFedCallInfo.hpp:14
Definition TimeoutMonitor.h:19
GlobalFederateId connection
the id of the connection
Definition TimeoutMonitor.h:23
bool waitingForPingReply
indicator that the connection is waiting
Definition TimeoutMonitor.h:20
bool activeConnection
indicator that the connection is active
Definition TimeoutMonitor.h:21
bool disablePing
indicator that the connection doesn't respond to pings
Definition TimeoutMonitor.h:22