]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/jaeger-client-cpp/src/jaegertracing/propagation/HeadersConfig.h
buildsys: switch source download to quincy
[ceph.git] / ceph / src / jaegertracing / jaeger-client-cpp / src / jaegertracing / propagation / HeadersConfig.h
1 /*
2 * Copyright (c) 2017 Uber Technologies, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #ifndef JAEGERTRACING_PROPAGATION_HEADERSCONFIG_H
18 #define JAEGERTRACING_PROPAGATION_HEADERSCONFIG_H
19
20 #include "jaegertracing/Constants.h"
21 #include "jaegertracing/utils/YAML.h"
22 #include <string>
23
24 namespace jaegertracing {
25 namespace propagation {
26
27 class HeadersConfig {
28 public:
29 #ifdef JAEGERTRACING_WITH_YAML_CPP
30
31 static HeadersConfig parse(const YAML::Node& configYAML)
32 {
33 if (!configYAML.IsDefined() || !configYAML.IsMap()) {
34 return HeadersConfig();
35 }
36
37 const auto jaegerDebugHeader = utils::yaml::findOrDefault<std::string>(
38 configYAML, "jaegerDebugHeader", "");
39 const auto jaegerBaggageHeader =
40 utils::yaml::findOrDefault<std::string>(
41 configYAML, "jaegerBaggageHeader", "");
42 const auto traceContextHeaderName =
43 utils::yaml::findOrDefault<std::string>(
44 configYAML, "TraceContextHeaderName", "");
45 const auto traceBaggageHeaderPrefix =
46 utils::yaml::findOrDefault<std::string>(
47 configYAML, "traceBaggageHeaderPrefix", "");
48
49 return HeadersConfig(jaegerDebugHeader,
50 jaegerBaggageHeader,
51 traceContextHeaderName,
52 traceBaggageHeaderPrefix);
53 }
54
55 #endif // JAEGERTRACING_WITH_YAML_CPP
56
57 HeadersConfig()
58 : HeadersConfig("", "", "", "")
59 {
60 }
61
62 HeadersConfig(const std::string& jaegerDebugHeader,
63 const std::string& jaegerBaggageHeader,
64 const std::string& traceContextHeaderName,
65 const std::string& traceBaggageHeaderPrefix)
66 : _jaegerDebugHeader(jaegerDebugHeader.empty() ? kJaegerDebugHeader
67 : jaegerDebugHeader)
68 , _jaegerBaggageHeader(jaegerBaggageHeader.empty()
69 ? kJaegerBaggageHeader
70 : jaegerBaggageHeader)
71 , _traceContextHeaderName(traceContextHeaderName.empty()
72 ? kTraceContextHeaderName
73 : traceContextHeaderName)
74 , _traceBaggageHeaderPrefix(traceBaggageHeaderPrefix.empty()
75 ? kTraceBaggageHeaderPrefix
76 : traceBaggageHeaderPrefix)
77 {
78 }
79
80 const std::string& jaegerBaggageHeader() const
81 {
82 return _jaegerBaggageHeader;
83 }
84
85 const std::string& jaegerDebugHeader() const { return _jaegerDebugHeader; }
86
87 const std::string& traceBaggageHeaderPrefix() const
88 {
89 return _traceBaggageHeaderPrefix;
90 }
91
92 const std::string& traceContextHeaderName() const
93 {
94 return _traceContextHeaderName;
95 }
96
97 private:
98 std::string _jaegerDebugHeader;
99 std::string _jaegerBaggageHeader;
100 std::string _traceContextHeaderName;
101 std::string _traceBaggageHeaderPrefix;
102 };
103
104 } // namespace propagation
105 } // namespace jaegertracing
106
107 #endif // JAEGERTRACING_PROPAGATION_HEADERSCONFIG_H