99namespace opentracing {
1010BEGIN_OPENTRACING_ABI_NAMESPACE
1111namespace mocktracer {
12- const opentracing::string_view propagation_key = " x-ot-span-context" ;
13-
1412static void WriteString (std::ostream& ostream, const std::string& s) {
1513 const uint32_t size = static_cast <uint32_t >(s.size ());
1614 ostream.write (reinterpret_cast <const char *>(&size), sizeof (size));
@@ -24,8 +22,9 @@ static void ReadString(std::istream& istream, std::string& s) {
2422 istream.read (&s[0 ], size);
2523}
2624
27- expected<void > InjectSpanContext (std::ostream& carrier,
28- const SpanContextData& span_context_data) {
25+ expected<void > InjectSpanContext (
26+ const PropagationOptions& /* propagation_options*/ , std::ostream& carrier,
27+ const SpanContextData& span_context_data) {
2928 carrier.write (reinterpret_cast <const char *>(&span_context_data.trace_id ),
3029 sizeof (&span_context_data.trace_id ));
3130 carrier.write (reinterpret_cast <const char *>(&span_context_data.span_id ),
@@ -50,8 +49,9 @@ expected<void> InjectSpanContext(std::ostream& carrier,
5049 return {};
5150}
5251
53- expected<bool > ExtractSpanContext (std::istream& carrier,
54- SpanContextData& span_context_data) try {
52+ expected<bool > ExtractSpanContext (
53+ const PropagationOptions& /* propagation_options*/ , std::istream& carrier,
54+ SpanContextData& span_context_data) try {
5555 // istream::peek returns EOF if it's in an error state, so check for an error
5656 // state first before checking for an empty stream.
5757 if (!carrier.good ()) {
@@ -86,10 +86,12 @@ expected<bool> ExtractSpanContext(std::istream& carrier,
8686 std::make_error_code (std::errc::not_enough_memory));
8787}
8888
89- expected<void > InjectSpanContext (const TextMapWriter& carrier,
89+ expected<void > InjectSpanContext (const PropagationOptions& propagation_options,
90+ const TextMapWriter& carrier,
9091 const SpanContextData& span_context_data) {
9192 std::ostringstream ostream;
92- auto result = InjectSpanContext (ostream, span_context_data);
93+ auto result =
94+ InjectSpanContext (propagation_options, ostream, span_context_data);
9395 if (!result) {
9496 return result;
9597 }
@@ -103,7 +105,7 @@ expected<void> InjectSpanContext(const TextMapWriter& carrier,
103105 std::make_error_code (std::errc::not_enough_memory));
104106 }
105107
106- result = carrier.Set (propagation_key, context_value);
108+ result = carrier.Set (propagation_options. propagation_key , context_value);
107109 if (!result) {
108110 return result;
109111 }
@@ -142,9 +144,11 @@ static opentracing::expected<opentracing::string_view> LookupKey(
142144
143145template <class KeyCompare >
144146static opentracing::expected<bool > ExtractSpanContext (
147+ const PropagationOptions& propagation_options,
145148 const opentracing::TextMapReader& carrier,
146149 SpanContextData& span_context_data, KeyCompare key_compare) {
147- auto value_maybe = LookupKey (carrier, propagation_key, key_compare);
150+ auto value_maybe =
151+ LookupKey (carrier, propagation_options.propagation_key , key_compare);
148152 if (!value_maybe) {
149153 if (value_maybe.error () == opentracing::key_not_found_error) {
150154 return false ;
@@ -165,22 +169,26 @@ static opentracing::expected<bool> ExtractSpanContext(
165169 opentracing::span_context_corrupted_error);
166170 }
167171 std::istringstream istream{base64_decoding};
168- return ExtractSpanContext (istream, span_context_data);
172+ return ExtractSpanContext (propagation_options, istream, span_context_data);
169173}
170174
171- expected<bool > ExtractSpanContext (const TextMapReader& carrier,
175+ expected<bool > ExtractSpanContext (const PropagationOptions& propagation_options,
176+ const TextMapReader& carrier,
172177 SpanContextData& span_context_data) {
173- return ExtractSpanContext (carrier, span_context_data,
178+ return ExtractSpanContext (propagation_options, carrier, span_context_data,
174179 std::equal_to<string_view>{});
175180}
176181
177- expected<void > InjectSpanContext (const HTTPHeadersWriter& carrier,
182+ expected<void > InjectSpanContext (const PropagationOptions& propagation_options,
183+ const HTTPHeadersWriter& carrier,
178184 const SpanContextData& span_context_data) {
179- return InjectSpanContext (static_cast <const TextMapWriter&>(carrier),
185+ return InjectSpanContext (propagation_options,
186+ static_cast <const TextMapWriter&>(carrier),
180187 span_context_data);
181188}
182189
183- expected<bool > ExtractSpanContext (const HTTPHeadersReader& carrier,
190+ expected<bool > ExtractSpanContext (const PropagationOptions& propagation_options,
191+ const HTTPHeadersReader& carrier,
184192 SpanContextData& span_context_data) {
185193 auto iequals = [](opentracing::string_view lhs,
186194 opentracing::string_view rhs) {
@@ -190,7 +198,8 @@ expected<bool> ExtractSpanContext(const HTTPHeadersReader& carrier,
190198 return std::tolower (a) == std::tolower (b);
191199 });
192200 };
193- return ExtractSpanContext (carrier, span_context_data, iequals);
201+ return ExtractSpanContext (propagation_options, carrier, span_context_data,
202+ iequals);
194203}
195204} // namespace mocktracer
196205END_OPENTRACING_ABI_NAMESPACE
0 commit comments