helics 3.7.0
Loading...
Searching...
No Matches
FilterOperations.hpp
Go to the documentation of this file.
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
13#include "../common/GuardedTypes.hpp"
14#include "../core/helicsTime.hpp"
15#include "gmlc/libguarded/cow_guarded.hpp"
16
17#include <atomic>
18#include <memory>
19#include <set>
20#include <string>
21#include <string_view>
22#include <vector>
23
24namespace helics {
25class Core;
26class FilterOperator;
27class MessageTimeOperator;
28class Message;
29class MessageConditionalOperator;
30class MessageDestOperator;
31class CloneOperator;
32class FirewallOperator;
35 public:
36 FilterOperations() = default;
37 virtual ~FilterOperations() = default;
38 // still figuring out if these functions have a use or not
39 FilterOperations(const FilterOperations& fo) = delete;
41 FilterOperations& operator=(const FilterOperations& fo) = delete;
42 FilterOperations& operator=(FilterOperations&& fo) = delete;
43
48 virtual void set(std::string_view property, double val);
53 virtual void setString(std::string_view property, std::string_view val);
54
58 virtual double getProperty(std::string_view property);
62 virtual std::string getString(std::string_view property);
63
65 virtual std::shared_ptr<FilterOperator> getOperator() = 0;
66};
67
70 private:
71 std::atomic<Time> delay{timeZero};
72 std::shared_ptr<MessageTimeOperator> td;
73
74 public:
75 explicit DelayFilterOperation(Time delayTime = timeZero);
76 virtual void set(std::string_view property, double val) override;
77 virtual void setString(std::string_view property, std::string_view val) override;
78 virtual double getProperty(std::string_view property) override;
79 virtual std::string getString(std::string_view property) override;
80 virtual std::shared_ptr<FilterOperator> getOperator() override;
81};
82
83class RandomDelayGenerator;
84
87 private:
88 std::shared_ptr<MessageTimeOperator> td;
89 std::unique_ptr<RandomDelayGenerator> rdelayGen;
90
91 public:
94 // the destructor is defined mainly to prevent the need to define the RandomDelayGenerator
95 // object here
98 virtual void set(std::string_view property, double val) override;
99 virtual void setString(std::string_view property, std::string_view val) override;
100 virtual double getProperty(std::string_view property) override;
101 virtual std::string getString(std::string_view property) override;
102 virtual std::shared_ptr<FilterOperator> getOperator() override;
103};
104
107 private:
108 std::atomic<double> dropProb{0.0};
109 std::shared_ptr<MessageConditionalOperator> tcond;
110
111 public:
114 virtual void set(std::string_view property, double val) override;
115 virtual void setString(std::string_view property, std::string_view val) override;
116 virtual double getProperty(std::string_view property) override;
117 virtual std::string getString(std::string_view property) override;
118 virtual std::shared_ptr<FilterOperator> getOperator() override;
119};
120
123 private:
124 std::shared_ptr<MessageDestOperator> op;
125 atomic_guarded<std::string> newDest;
127 conditions;
128
129 public:
132 virtual void set(std::string_view property, double val) override;
133 virtual void setString(std::string_view property, std::string_view val) override;
134 virtual double getProperty(std::string_view property) override;
135 virtual std::string getString(std::string_view property) override;
136 virtual std::shared_ptr<FilterOperator> getOperator() override;
137
138 private:
140 std::string rerouteOperation(const std::string& src, const std::string& dest) const;
141};
142
145 private:
146 std::shared_ptr<FirewallOperator> op;
148 gmlc::libguarded::cow_guarded<std::vector<std::string>> allowed;
150 gmlc::libguarded::cow_guarded<std::vector<std::string>> blocked;
151
152 public:
155 virtual void set(std::string_view property, double val) override;
156 virtual void setString(std::string_view property, std::string_view val) override;
157 virtual double getProperty(std::string_view property) override;
158 virtual std::string getString(std::string_view property) override;
159 virtual std::shared_ptr<FilterOperator> getOperator() override;
160
161 private:
163 bool allowPassed(const Message* mess) const;
164};
165
168 private:
169 std::shared_ptr<CloneOperator> op;
172
173 public:
174 explicit CloneFilterOperation();
175
177 virtual void set(std::string_view property, double val) override;
178 virtual void setString(std::string_view property, std::string_view val) override;
179 virtual double getProperty(std::string_view property) override;
180 virtual std::string getString(std::string_view property) override;
181 virtual std::shared_ptr<FilterOperator> getOperator() override;
182
183 private:
186 std::vector<std::unique_ptr<Message>> sendMessage(const Message* mess) const;
187};
188
189} // namespace helics
Definition application_api/Federate.hpp:27
Definition FilterOperations.hpp:167
virtual std::string getString(std::string_view property) override
Definition FilterOperations.cpp:506
virtual void setString(std::string_view property, std::string_view val) override
Definition FilterOperations.cpp:473
virtual void set(std::string_view property, double val) override
Definition FilterOperations.cpp:467
virtual double getProperty(std::string_view property) override
Definition FilterOperations.cpp:501
virtual std::shared_ptr< FilterOperator > getOperator() override
Definition FilterOperations.cpp:530
Definition FilterOperations.hpp:69
virtual double getProperty(std::string_view property) override
Definition FilterOperations.cpp:69
virtual std::string getString(std::string_view property) override
Definition FilterOperations.cpp:77
virtual std::shared_ptr< FilterOperator > getOperator() override
Definition FilterOperations.cpp:85
virtual void set(std::string_view property, double val) override
Definition FilterOperations.cpp:48
virtual void setString(std::string_view property, std::string_view val) override
Definition FilterOperations.cpp:57
Definition FilterOperations.hpp:34
virtual void setString(std::string_view property, std::string_view val)
Definition FilterOperations.cpp:28
virtual void set(std::string_view property, double val)
Definition FilterOperations.cpp:27
virtual std::shared_ptr< FilterOperator > getOperator()=0
virtual std::string getString(std::string_view property)
Definition FilterOperations.cpp:34
virtual double getProperty(std::string_view property)
Definition FilterOperations.cpp:30
Definition FilterOperations.hpp:144
virtual void setString(std::string_view property, std::string_view val) override
Definition FilterOperations.cpp:436
virtual std::string getString(std::string_view property) override
Definition FilterOperations.cpp:443
virtual double getProperty(std::string_view property) override
Definition FilterOperations.cpp:438
virtual void set(std::string_view property, double val) override
Definition FilterOperations.cpp:434
virtual std::shared_ptr< FilterOperator > getOperator() override
Definition FilterOperations.cpp:448
Definition core-data.hpp:29
Definition FilterOperations.hpp:86
virtual void set(std::string_view property, double val) override
Definition FilterOperations.cpp:224
virtual std::shared_ptr< FilterOperator > getOperator() override
Definition FilterOperations.cpp:284
RandomDelayFilterOperation()
Definition FilterOperations.cpp:216
virtual void setString(std::string_view property, std::string_view val) override
Definition FilterOperations.cpp:234
virtual double getProperty(std::string_view property) override
Definition FilterOperations.cpp:252
virtual std::string getString(std::string_view property) override
Definition FilterOperations.cpp:265
Definition FilterOperations.hpp:106
virtual void setString(std::string_view property, std::string_view val) override
Definition FilterOperations.cpp:303
virtual std::string getString(std::string_view property) override
Definition FilterOperations.cpp:315
virtual double getProperty(std::string_view property) override
Definition FilterOperations.cpp:307
virtual void set(std::string_view property, double val) override
Definition FilterOperations.cpp:297
virtual std::shared_ptr< FilterOperator > getOperator() override
Definition FilterOperations.cpp:323
Definition FilterOperations.hpp:122
virtual double getProperty(std::string_view property) override
Definition FilterOperations.cpp:360
virtual std::string getString(std::string_view property) override
Definition FilterOperations.cpp:365
virtual std::shared_ptr< FilterOperator > getOperator() override
Definition FilterOperations.cpp:392
virtual void set(std::string_view property, double val) override
Definition FilterOperations.cpp:338
virtual void setString(std::string_view property, std::string_view val) override
Definition FilterOperations.cpp:340
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