Skip to content

Commit 05b20a3

Browse files
authored
[user_events exporter] Fix event_field_format_ flag in PopulateAttribute (#292)
1 parent 5474b99 commit 05b20a3

File tree

4 files changed

+69
-22
lines changed

4 files changed

+69
-22
lines changed

exporters/user_events/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ add_definitions(-DHAVE_CONSOLE_LOG -DENABLE_LOGS_PREVIEW)
2121

2222
if(MAIN_PROJECT)
2323
# TODO: cleanup the dependent packages
24-
find_package(protobuf REQUIRED)
24+
find_package(Protobuf REQUIRED)
2525
find_package(CURL REQUIRED)
2626
find_package(nlohmann_json REQUIRED)
2727
find_package(opentelemetry-cpp REQUIRED)

exporters/user_events/Docker/Dockerfile

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,6 @@ RUN cd /work && \
4242
ninja && \
4343
ninja install
4444

45-
RUN cd /work && \
46-
git clone --recursive --depth=1 https://github.com/protocolbuffers/protobuf.git && \
47-
cd protobuf && mkdir build && cd build && \
48-
cmake -G Ninja -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_EXAMPLES=OFF .. && \
49-
ninja && \
50-
ninja install
51-
5245
RUN cd /work && \
5346
git clone --recursive --depth=1 https://github.com/open-telemetry/opentelemetry-cpp-contrib
5447

@@ -57,4 +50,4 @@ RUN cd /work && \
5750
mkdir build && cd build && \
5851
cmake -G Ninja -D CMAKE_BUILD_TYPE=Debug .. && \
5952
ninja && \
60-
ninja install
53+
ninja install

exporters/user_events/include/opentelemetry/exporters/user_events/logs/exporter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace sdk_logs = opentelemetry::sdk::logs;
2929
class Exporter final : public opentelemetry::sdk::logs::LogRecordExporter
3030
{
3131
public:
32-
Exporter(const ExporterOptions &options) noexcept;
32+
explicit Exporter(const ExporterOptions &options) noexcept;
3333

3434
/**
3535
* Exports a span of logs sent from the processor.

exporters/user_events/src/utils.cc

Lines changed: 66 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,27 @@ namespace api_common = opentelemetry::common;
1717

1818
const int kAttributeValueSize = 16;
1919

20+
//
21+
// Iterator which convers "nostd::string_view *" to "std::string_view *".
22+
// This is needed to pass a span of "nostd::string_view" to EventBuilder::AddStringRange.
23+
//
24+
struct StringViewIterator
25+
{
26+
const nostd::string_view *m_ptr;
27+
explicit StringViewIterator(const nostd::string_view *ptr) noexcept : m_ptr(ptr) {}
28+
bool operator==(StringViewIterator other) const noexcept { return m_ptr == other.m_ptr; }
29+
bool operator!=(StringViewIterator other) const noexcept { return m_ptr != other.m_ptr; }
30+
const std::string_view operator*() const noexcept
31+
{
32+
return std::string_view(m_ptr->data(), m_ptr->size());
33+
}
34+
StringViewIterator &operator++() noexcept
35+
{
36+
m_ptr += 1;
37+
return *this;
38+
}
39+
};
40+
2041
void PopulateAttribute(nostd::string_view key,
2142
const api_common::AttributeValue &value,
2243
ehd::EventBuilder &event_builder) noexcept
@@ -26,17 +47,19 @@ void PopulateAttribute(nostd::string_view key,
2647

2748
const char *key_name = key.data();
2849

50+
// TODO: implement this with a visitor
51+
2952
if (nostd::holds_alternative<bool>(value))
3053
{
31-
event_builder.AddValue(key_name, nostd::get<bool>(value), event_field_format_default);
54+
event_builder.AddValue(key_name, nostd::get<bool>(value), event_field_format_boolean);
3255
}
3356
else if (nostd::holds_alternative<int>(value))
3457
{
35-
event_builder.AddValue(key_name, nostd::get<int>(value), event_field_format_default);
58+
event_builder.AddValue(key_name, nostd::get<int>(value), event_field_format_signed_int);
3659
}
3760
else if (nostd::holds_alternative<int64_t>(value))
3861
{
39-
event_builder.AddValue(key_name, nostd::get<int64_t>(value), event_field_format_default);
62+
event_builder.AddValue(key_name, nostd::get<int64_t>(value), event_field_format_signed_int);
4063
}
4164
else if (nostd::holds_alternative<unsigned int>(value))
4265
{
@@ -48,7 +71,7 @@ void PopulateAttribute(nostd::string_view key,
4871
}
4972
else if (nostd::holds_alternative<double>(value), event_field_format_default)
5073
{
51-
event_builder.AddValue(key_name, nostd::get<double>(value), event_field_format_default);
74+
event_builder.AddValue(key_name, nostd::get<double>(value), event_field_format_float);
5275
}
5376
else if (nostd::holds_alternative<const char *>(value))
5477
{
@@ -62,22 +85,53 @@ void PopulateAttribute(nostd::string_view key,
6285
}
6386
else if (nostd::holds_alternative<nostd::span<const uint8_t>>(value))
6487
{
65-
// TODO: implement
88+
auto value_span = nostd::get<nostd::span<const uint8_t>>(value);
89+
event_builder.AddValueRange(key_name, value_span.begin(), value_span.end(),
90+
event_field_format_default);
6691
}
6792
else if (nostd::holds_alternative<nostd::span<const int>>(value))
68-
{}
93+
{
94+
auto value_span = nostd::get<nostd::span<const int>>(value);
95+
event_builder.AddValueRange(key_name, value_span.begin(), value_span.end(),
96+
event_field_format_signed_int);
97+
}
6998
else if (nostd::holds_alternative<nostd::span<const int64_t>>(value))
70-
{}
99+
{
100+
auto value_span = nostd::get<nostd::span<const int64_t>>(value);
101+
event_builder.AddValueRange(key_name, value_span.begin(), value_span.end(),
102+
event_field_format_signed_int);
103+
}
71104
else if (nostd::holds_alternative<nostd::span<const unsigned int>>(value))
72-
{}
105+
{
106+
auto value_span = nostd::get<nostd::span<const unsigned int>>(value);
107+
event_builder.AddValueRange(key_name, value_span.begin(), value_span.end(),
108+
event_field_format_default);
109+
}
73110
else if (nostd::holds_alternative<nostd::span<const uint64_t>>(value))
74-
{}
111+
{
112+
auto value_span = nostd::get<nostd::span<const unsigned int>>(value);
113+
event_builder.AddValueRange(key_name, value_span.begin(), value_span.end(),
114+
event_field_format_default);
115+
}
75116
else if (nostd::holds_alternative<nostd::span<const double>>(value))
76-
{}
117+
{
118+
auto value_span = nostd::get<nostd::span<const double>>(value);
119+
event_builder.AddValueRange(key_name, value_span.begin(), value_span.end(),
120+
event_field_format_float);
121+
}
77122
else if (nostd::holds_alternative<nostd::span<const bool>>(value))
78-
{}
123+
{
124+
auto value_span = nostd::get<nostd::span<const bool>>(value);
125+
event_builder.AddValueRange(key_name, value_span.begin(), value_span.end(),
126+
event_field_format_boolean);
127+
}
79128
else if (nostd::holds_alternative<nostd::span<const nostd::string_view>>(value))
80-
{}
129+
{
130+
auto value_span = nostd::get<nostd::span<const nostd::string_view>>(value);
131+
event_builder.AddStringRange<char>(key_name, StringViewIterator(value_span.data()),
132+
StringViewIterator(value_span.data() + value_span.size()),
133+
event_field_format_default);
134+
}
81135
}
82136

83137
} // namespace utils

0 commit comments

Comments
 (0)