1
1
// Copyright The OpenTelemetry Authors
2
2
// SPDX-License-Identifier: Apache-2.0
3
3
4
+ #include < stddef.h>
4
5
#include < stdint.h>
5
6
#include < chrono>
6
7
#include < map>
11
12
#include < vector>
12
13
13
14
#include " opentelemetry/common/attribute_value.h"
15
+ #include " opentelemetry/common/kv_properties.h"
14
16
#include " opentelemetry/context/propagation/composite_propagator.h"
15
17
#include " opentelemetry/context/propagation/text_map_propagator.h"
16
18
#include " opentelemetry/nostd/span.h"
19
+ #include " opentelemetry/nostd/string_view.h"
17
20
#include " opentelemetry/sdk/common/global_log_handler.h"
18
21
#include " opentelemetry/sdk/configuration/aggregation_configuration.h"
19
22
#include " opentelemetry/sdk/configuration/aggregation_configuration_visitor.h"
@@ -159,20 +162,20 @@ namespace sdk
159
162
namespace configuration
160
163
{
161
164
162
- class AttributeValueSetter
165
+ class ResourceAttributeValueSetter
163
166
: public opentelemetry::sdk::configuration::AttributeValueConfigurationVisitor
164
167
{
165
168
public:
166
- AttributeValueSetter ( const SdkBuilder *b,
167
- opentelemetry::sdk::resource::ResourceAttributes &resource_attributes,
168
- const std::string &name)
169
- : m_sdk_builder(b), resource_attributes_(resource_attributes), name_(name)
169
+ ResourceAttributeValueSetter (
170
+ opentelemetry::sdk::resource::ResourceAttributes &resource_attributes,
171
+ const std::string &name)
172
+ : resource_attributes_(resource_attributes), name_(name)
170
173
{}
171
- AttributeValueSetter (AttributeValueSetter &&) = delete ;
172
- AttributeValueSetter (const AttributeValueSetter &) = delete ;
173
- AttributeValueSetter &operator =(AttributeValueSetter &&) = delete ;
174
- AttributeValueSetter &operator =(const AttributeValueSetter &other) = delete ;
175
- ~AttributeValueSetter () override = default ;
174
+ ResourceAttributeValueSetter (ResourceAttributeValueSetter &&) = delete ;
175
+ ResourceAttributeValueSetter (const ResourceAttributeValueSetter &) = delete ;
176
+ ResourceAttributeValueSetter &operator =(ResourceAttributeValueSetter &&) = delete ;
177
+ ResourceAttributeValueSetter &operator =(const ResourceAttributeValueSetter &other) = delete ;
178
+ ~ResourceAttributeValueSetter () override = default ;
176
179
177
180
void VisitString (
178
181
const opentelemetry::sdk::configuration::StringAttributeValueConfiguration *model) override
@@ -209,7 +212,10 @@ class AttributeValueSetter
209
212
size_t length = model->value .size ();
210
213
std::vector<nostd::string_view> string_view_array (length);
211
214
212
- for (int i = 0 ; i < length; i++)
215
+ // We have: std::vector<std::string>
216
+ // We need: nostd::span<const nostd::string_view>
217
+
218
+ for (size_t i = 0 ; i < length; i++)
213
219
{
214
220
string_view_array[i] = model->value [i];
215
221
}
@@ -227,7 +233,10 @@ class AttributeValueSetter
227
233
size_t length = model->value .size ();
228
234
std::vector<int64_t > int_array (length);
229
235
230
- for (int i = 0 ; i < length; i++)
236
+ // We have: std::vector<size_t>
237
+ // We need: nostd::span<const int64_t>
238
+
239
+ for (size_t i = 0 ; i < length; i++)
231
240
{
232
241
int_array[i] = model->value [i];
233
242
}
@@ -242,15 +251,11 @@ class AttributeValueSetter
242
251
const opentelemetry::sdk::configuration::DoubleArrayAttributeValueConfiguration *model)
243
252
override
244
253
{
245
- size_t length = model->value .size ();
246
- std::vector<double > double_array (length);
247
-
248
- for (int i = 0 ; i < length; i++)
249
- {
250
- double_array[i] = model->value [i];
251
- }
254
+ // We have: std::vector<double>
255
+ // We need: nostd::span<const double>
256
+ // so no data conversion needed
252
257
253
- nostd::span<const double > span (double_array .data (), double_array .size ());
258
+ nostd::span<const double > span (model-> value .data (), model-> value .size ());
254
259
255
260
opentelemetry::common::AttributeValue attribute_value (span);
256
261
resource_attributes_.SetAttribute (name_, attribute_value);
@@ -266,7 +271,10 @@ class AttributeValueSetter
266
271
// it has no data() to convert it to a span
267
272
std::unique_ptr<bool []> bool_array (new bool [length]);
268
273
269
- for (int i = 0 ; i < length; i++)
274
+ // We have: std::vector<bool>
275
+ // We need: nostd::span<const bool>
276
+
277
+ for (size_t i = 0 ; i < length; i++)
270
278
{
271
279
bool_array[i] = model->value [i];
272
280
}
@@ -280,7 +288,6 @@ class AttributeValueSetter
280
288
opentelemetry::common::AttributeValue attribute_value;
281
289
282
290
private:
283
- const SdkBuilder *m_sdk_builder;
284
291
opentelemetry::sdk::resource::ResourceAttributes &resource_attributes_;
285
292
std::string name_;
286
293
};
@@ -1642,7 +1649,7 @@ void SdkBuilder::SetResourceAttribute(
1642
1649
const std::string &name,
1643
1650
const opentelemetry::sdk::configuration::AttributeValueConfiguration *model) const
1644
1651
{
1645
- AttributeValueSetter setter (this , resource_attributes, name);
1652
+ ResourceAttributeValueSetter setter (resource_attributes, name);
1646
1653
// Invokes resource_attributes.SetAttribute(name, <proper value from model>)
1647
1654
model->Accept (&setter);
1648
1655
}
0 commit comments