xref: /openbmc/telemetry/tests/src/params/metric_params.hpp (revision dcc4e1936173a93251a02066432bc2bcbc386240)
1 #pragma once
2 
3 #include "types/collection_duration.hpp"
4 #include "types/collection_time_scope.hpp"
5 #include "types/operation_type.hpp"
6 
7 #include <string>
8 
9 class MetricParams final
10 {
11   public:
12     MetricParams& operationType(OperationType val)
13     {
14         operationTypeProperty = val;
15         return *this;
16     }
17 
18     const OperationType& operationType() const
19     {
20         return operationTypeProperty;
21     }
22 
23     MetricParams& id(std::string val)
24     {
25         idProperty = std::move(val);
26         return *this;
27     }
28 
29     const std::string& id() const
30     {
31         return idProperty;
32     }
33 
34     MetricParams& metadata(std::string val)
35     {
36         metadataProperty = std::move(val);
37         return *this;
38     }
39 
40     const std::string& metadata() const
41     {
42         return metadataProperty;
43     }
44 
45     MetricParams& collectionTimeScope(CollectionTimeScope val)
46     {
47         collectionTimeScopeProperty = val;
48         return *this;
49     }
50 
51     const CollectionTimeScope& collectionTimeScope() const
52     {
53         return collectionTimeScopeProperty;
54     }
55 
56     MetricParams& collectionDuration(CollectionDuration val)
57     {
58         collectionDurationProperty = val;
59         return *this;
60     }
61 
62     const CollectionDuration& collectionDuration() const
63     {
64         return collectionDurationProperty;
65     }
66 
67   private:
68     OperationType operationTypeProperty = {};
69     std::string idProperty = "MetricId";
70     std::string metadataProperty = "MetricMetadata";
71     CollectionTimeScope collectionTimeScopeProperty = {};
72     CollectionDuration collectionDurationProperty =
73         CollectionDuration(Milliseconds(0u));
74 };
75