Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
LegacyPropagator.cs
Go to the documentation of this file.
3using System.Net;
4
5namespace System.Diagnostics;
6
8{
9 internal static DistributedContextPropagator Instance { get; } = new LegacyPropagator();
10
11
12 public override IReadOnlyCollection<string> Fields { get; } = new ReadOnlyCollection<string>(new string[5] { "traceparent", "Request-Id", "tracestate", "baggage", "Correlation-Context" });
13
14
16 {
17 if (activity == null || setter == null)
18 {
19 return;
20 }
21 string id = activity.Id;
22 if (id == null)
23 {
24 return;
25 }
26 if (activity.IdFormat == ActivityIdFormat.W3C)
27 {
28 setter(carrier, "traceparent", id);
29 if (!string.IsNullOrEmpty(activity.TraceStateString))
30 {
31 setter(carrier, "tracestate", activity.TraceStateString);
32 }
33 }
34 else
35 {
36 setter(carrier, "Request-Id", id);
37 }
39 }
40
41 public override void ExtractTraceIdAndState(object carrier, PropagatorGetterCallback getter, out string traceId, out string traceState)
42 {
43 if (getter == null)
44 {
45 traceId = null;
46 traceState = null;
47 return;
48 }
49 getter(carrier, "traceparent", out traceId, out var fieldValues);
50 if (traceId == null)
51 {
52 getter(carrier, "Request-Id", out traceId, out fieldValues);
53 }
54 getter(carrier, "tracestate", out traceState, out fieldValues);
55 }
56
58 {
59 if (getter == null)
60 {
61 return null;
62 }
63 getter(carrier, "baggage", out var fieldValue, out var fieldValues);
66 {
67 getter(carrier, "Correlation-Context", out fieldValue, out fieldValues);
68 if (fieldValue != null)
69 {
71 }
72 }
73 return baggage;
74 }
75
77 {
78 baggage = null;
80 if (string.IsNullOrEmpty(baggageString))
81 {
82 return true;
83 }
84 int i = 0;
85 while (true)
86 {
87 if (i < baggageString.Length && (baggageString[i] == ' ' || baggageString[i] == '\t'))
88 {
89 i++;
90 continue;
91 }
92 if (i >= baggageString.Length)
93 {
94 break;
95 }
96 int num = i;
97 for (; i < baggageString.Length && baggageString[i] != ' ' && baggageString[i] != '\t' && baggageString[i] != '='; i++)
98 {
99 }
100 if (i >= baggageString.Length)
101 {
102 break;
103 }
104 int num2 = i;
105 if (baggageString[i] != '=')
106 {
107 for (; i < baggageString.Length && (baggageString[i] == ' ' || baggageString[i] == '\t'); i++)
108 {
109 }
110 if (i >= baggageString.Length || baggageString[i] != '=')
111 {
112 break;
113 }
114 }
115 for (i++; i < baggageString.Length && (baggageString[i] == ' ' || baggageString[i] == '\t'); i++)
116 {
117 }
118 if (i >= baggageString.Length)
119 {
120 break;
121 }
122 int num3 = i;
123 for (; i < baggageString.Length && baggageString[i] != ' ' && baggageString[i] != '\t' && baggageString[i] != ',' && baggageString[i] != ';'; i++)
124 {
125 }
126 if (num < num2 && num3 < i)
127 {
128 if (list == null)
129 {
131 }
133 }
134 for (; i < baggageString.Length && baggageString[i] != ','; i++)
135 {
136 }
137 i++;
138 if (i >= baggageString.Length)
139 {
140 break;
141 }
142 }
143 baggage = list;
144 return list != null;
145 }
146}
delegate void PropagatorSetterCallback(object? carrier, string fieldName, string fieldValue)
static void InjectBaggage(object carrier, IEnumerable< KeyValuePair< string, string > > baggage, PropagatorSetterCallback setter)
delegate void PropagatorGetterCallback(object? carrier, string fieldName, out string? fieldValue, out IEnumerable< string >? fieldValues)
override IReadOnlyCollection< string > Fields
override void Inject(Activity activity, object carrier, PropagatorSetterCallback setter)
static bool TryExtractBaggage(string baggageString, out IEnumerable< KeyValuePair< string, string > > baggage)
override void ExtractTraceIdAndState(object carrier, PropagatorGetterCallback getter, out string traceId, out string traceState)
override IEnumerable< KeyValuePair< string, string > > ExtractBaggage(object carrier, PropagatorGetterCallback getter)
static DistributedContextPropagator Instance
static ? string UrlDecode(string? encodedValue)