Line data Source code
1 : #include "environment.h" 2 : 3 : #include <cstdlib> 4 : 5 : #include "json.hpp" 6 : 7 : namespace datadog { 8 : namespace tracing { 9 : namespace environment { 10 : 11 75 : StringView name(Variable variable) { return variable_names[variable]; } 12 : 13 20446 : Optional<StringView> lookup(Variable variable) { 14 20446 : const char *name = variable_names[variable]; 15 20446 : const char *value = std::getenv(name); 16 20446 : if (!value) { 17 20238 : return nullopt; 18 : } 19 208 : return StringView{value}; 20 : } 21 : 22 503 : nlohmann::json to_json() { 23 503 : auto result = nlohmann::json::object({}); 24 : 25 13078 : for (const char *name : variable_names) { 26 12575 : if (const char *value = std::getenv(name)) { 27 5 : result[name] = value; 28 : } 29 : } 30 : 31 503 : return result; 32 0 : } 33 : 34 : } // namespace environment 35 : } // namespace tracing 36 : } // namespace datadog