helics 3.7.0
Loading...
Searching...
No Matches
Echo.hpp
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
9#include "../application_api/MessageFederate.hpp"
10#include "helicsApp.hpp"
11
12#include <deque>
13#include <memory>
14#include <mutex>
15#include <string>
16#include <vector>
17
18namespace helics {
19namespace apps {
27 class HELICS_CXX_EXPORT Echo: public App {
28 public:
30 Echo() = default;
34 explicit Echo(std::vector<std::string> args);
39 Echo(int argc, char* argv[]);
45 explicit Echo(std::string_view name, const FederateInfo& fedInfo);
51 Echo(std::string_view name, const std::shared_ptr<Core>& core, const FederateInfo& fedInfo);
57 Echo(std::string_view name, CoreApp& core, const FederateInfo& fedInfo);
62 Echo(std::string_view name, const std::string& jsonString);
63
65 Echo(Echo&& other_echo) noexcept;
67 Echo& operator=(Echo&& other_echo) noexcept;
68
72 virtual void runTo(Time stopTime_input) override;
73
78 void addEndpoint(std::string_view endpointName, std::string_view endpointType = "");
79
81 auto echoCount() const { return echoCounter; }
85 void setEchoDelay(Time delay);
86
88 auto endpointCount() const { return endpoints.size(); }
89
90 private:
92 virtual void loadJsonFile(const std::string& jsonFile,
93 bool enableFederateInterfaceRegistration) override;
95 void echoMessage(const Endpoint& ept, Time currentTime);
96
97 private:
99 void initialSetup();
101 void processArgs();
102 std::deque<Endpoint> endpoints;
103 Time delayTime = timeZero;
104 size_t echoCounter = 0;
105 std::mutex delayTimeLock; // mutex protecting delayTime
106 };
107} // namespace apps
108} // namespace helics
Definition Endpoints.hpp:21
Definition FederateInfo.hpp:28
Definition helicsApp.hpp:32
Definition Echo.hpp:27
auto endpointCount() const
Definition Echo.hpp:88
auto echoCount() const
Definition Echo.hpp:81
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition AsyncFedCallInfo.hpp:14
constexpr Time timeZero
Definition helicsTime.hpp:31
TimeRepresentation< count_time< 9 > > Time
Definition helicsTime.hpp:27