diff options
Diffstat (limited to 'src/jaegertracing/opentelemetry-cpp/sdk/src/resource/resource_detector.cc')
-rw-r--r-- | src/jaegertracing/opentelemetry-cpp/sdk/src/resource/resource_detector.cc | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/jaegertracing/opentelemetry-cpp/sdk/src/resource/resource_detector.cc b/src/jaegertracing/opentelemetry-cpp/sdk/src/resource/resource_detector.cc new file mode 100644 index 000000000..c60056539 --- /dev/null +++ b/src/jaegertracing/opentelemetry-cpp/sdk/src/resource/resource_detector.cc @@ -0,0 +1,39 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include "opentelemetry/sdk/resource/resource_detector.h" +#include "opentelemetry/sdk/common/env_variables.h" +#include "opentelemetry/sdk/resource/resource.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace resource +{ + +const char *OTEL_RESOURCE_ATTRIBUTES = "OTEL_RESOURCE_ATTRIBUTES"; + +Resource OTELResourceDetector::Detect() noexcept +{ + auto attributes_str = + opentelemetry::sdk::common::GetEnvironmentVariable(OTEL_RESOURCE_ATTRIBUTES); + if (attributes_str.size() == 0) + { + return Resource(); + } + ResourceAttributes attributes; + std::istringstream iss(attributes_str); + std::string token; + while (std::getline(iss, token, ',')) + { + size_t pos = token.find('='); + std::string key = token.substr(0, pos); + std::string value = token.substr(pos + 1); + attributes[key] = value; + } + return Resource(attributes); +} + +} // namespace resource +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE |