Skip to content

Commit 3753120

Browse files
committed
Refactor AsString() to avoid creating a closure
1 parent 97acd66 commit 3753120

File tree

1 file changed

+27
-9
lines changed

1 file changed

+27
-9
lines changed

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/Telemetry/ConfigurationBuilder.cs

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,17 +159,17 @@ public HasKeys(IConfigurationSource source, IConfigurationTelemetry telemetry, s
159159
// String accessors
160160
// ****************
161161
public string? AsRedactedString()
162-
=> AsString(getDefaultValue: null, validator: null, converter: null, recordValue: false);
162+
=> AsString(defaultValue: null, validator: null, recordValue: false);
163163

164164
public string AsRedactedString(string defaultValue)
165-
=> AsString(() => defaultValue, validator: null, converter: null, recordValue: false);
165+
=> AsString(defaultValue, validator: null, recordValue: false);
166166

167167
/// <summary>
168168
/// Beware, this function won't record telemetry if the config isn't explicitly set.
169169
/// If you can, use <see cref="AsString(string)"/> instead or record telemetry manually.
170170
/// </summary>
171171
/// <returns>the string value of the configuration if set</returns>
172-
public string? AsString() => AsString(getDefaultValue: null, validator: null, converter: null, recordValue: true);
172+
public string? AsString() => AsString(defaultValue: null, validator: null, recordValue: true);
173173

174174
public string AsString(string defaultValue) => AsString(defaultValue, validator: null);
175175

@@ -178,25 +178,43 @@ public string AsRedactedString(string defaultValue)
178178
/// If you can, use <see cref="AsString(string, Func&lt;string, bool&gt;?)" /> instead or record telemetry manually.
179179
/// </summary>
180180
/// <returns>the string value of the configuration if set and valid</returns>
181-
public string? AsString(Func<string, bool> validator) => AsString(getDefaultValue: null, validator, recordValue: true);
181+
public string? AsString(Func<string, bool> validator) => AsString(defaultValue: null, validator, recordValue: true);
182182

183183
public string AsString(string defaultValue, Func<string, bool>? validator)
184-
=> AsString(() => defaultValue, validator, recordValue: true);
184+
=> AsString(defaultValue, validator, recordValue: true);
185185

186186
[return: NotNullIfNotNull(nameof(getDefaultValue))]
187-
public string? AsString(Func<DefaultResult<string>>? getDefaultValue, Func<string, bool>? validator)
187+
public string? AsString(Func<string>? getDefaultValue, Func<string, bool>? validator)
188188
=> AsString(getDefaultValue, validator, recordValue: true);
189189

190190
[return: NotNullIfNotNull(nameof(getDefaultValue))]
191-
public string? AsString(Func<DefaultResult<string>>? getDefaultValue, Func<string, bool>? validator, Func<string, ParsingResult<string>> converter)
191+
public string? AsString(Func<string>? getDefaultValue, Func<string, bool>? validator, Func<string, ParsingResult<string>> converter)
192192
=> AsString(getDefaultValue, validator, converter, recordValue: true);
193193

194194
[return: NotNullIfNotNull(nameof(getDefaultValue))]
195-
private string? AsString(Func<DefaultResult<string>>? getDefaultValue, Func<string, bool>? validator, bool recordValue)
195+
private string? AsString(Func<string>? getDefaultValue, Func<string, bool>? validator, bool recordValue)
196196
=> AsString(getDefaultValue, validator, converter: null, recordValue);
197197

198+
[return: NotNullIfNotNull(nameof(defaultValue))]
199+
private string? AsString(string? defaultValue, Func<string, bool>? validator, bool recordValue)
200+
{
201+
var result = GetStringResult(validator, converter: null, recordValue);
202+
if (result is { Result: { } ddResult, IsValid: true })
203+
{
204+
return ddResult;
205+
}
206+
207+
if (defaultValue is null)
208+
{
209+
return null;
210+
}
211+
212+
Telemetry.Record(Key, defaultValue, recordValue, ConfigurationOrigins.Default);
213+
return defaultValue;
214+
}
215+
198216
[return: NotNullIfNotNull(nameof(getDefaultValue))]
199-
private string? AsString(Func<DefaultResult<string>>? getDefaultValue, Func<string, bool>? validator, Func<string, ParsingResult<string>>? converter, bool recordValue)
217+
private string? AsString(Func<string>? getDefaultValue, Func<string, bool>? validator, Func<string, ParsingResult<string>>? converter, bool recordValue)
200218
{
201219
var result = GetStringResult(validator, converter, recordValue);
202220
return TryHandleResult(Telemetry, Key, result, recordValue, getDefaultValue, out var value) ? value : null;

0 commit comments

Comments
 (0)