Skip to content

Commit b62b05c

Browse files
committed
trace2: enable JSON source generation
Enable JSON source generation for Trace2 messages. This will further help unlock AOT compilation options which cannot use reflection-based APIs. Replace the custom JSON naming policy with the built-in lower snake case policy, and for good measure also explictly set the enum string values as attributes on the members themselves. Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
1 parent eea0740 commit b62b05c

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

src/shared/Core/Trace2.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.IO;
44
using System.IO.Pipes;
55
using System.Text;
6+
using System.Text.Json.Serialization;
67
using System.Threading;
78

89
namespace GitCredentialManager;
@@ -13,13 +14,21 @@ namespace GitCredentialManager;
1314
/// </summary>
1415
public enum Trace2Event
1516
{
17+
[JsonStringEnumMemberName("version")]
1618
Version = 0,
19+
[JsonStringEnumMemberName("start")]
1720
Start = 1,
21+
[JsonStringEnumMemberName("exit")]
1822
Exit = 2,
23+
[JsonStringEnumMemberName("child_start")]
1924
ChildStart = 3,
25+
[JsonStringEnumMemberName("child_exit")]
2026
ChildExit = 4,
27+
[JsonStringEnumMemberName("error")]
2128
Error = 5,
29+
[JsonStringEnumMemberName("region_enter")]
2230
RegionEnter = 6,
31+
[JsonStringEnumMemberName("region_leave")]
2332
RegionLeave = 7,
2433
}
2534

@@ -28,9 +37,13 @@ public enum Trace2Event
2837
/// </summary>
2938
public enum Trace2ProcessClass
3039
{
40+
[JsonStringEnumMemberName("none")]
3141
None = 0,
42+
[JsonStringEnumMemberName("ui_helper")]
3243
UIHelper = 1,
44+
[JsonStringEnumMemberName("git")]
3345
Git = 2,
46+
[JsonStringEnumMemberName("other")]
3447
Other = 3
3548
}
3649

src/shared/Core/Trace2Message.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ namespace GitCredentialManager;
1515
[JsonSerializable(typeof(RegionEnterMessage))]
1616
[JsonSerializable(typeof(RegionLeaveMessage))]
1717
[JsonSourceGenerationOptions(
18+
UseStringEnumConverter = true,
1819
PropertyNamingPolicy = JsonKnownNamingPolicy.SnakeCaseLower,
1920
PropertyNameCaseInsensitive = true
2021
)]
@@ -536,9 +537,3 @@ protected override string GetEventMessage(Trace2FormatTarget formatTarget)
536537
return Message;
537538
}
538539
}
539-
540-
public class SnakeCaseNamingPolicy : JsonNamingPolicy
541-
{
542-
public override string ConvertName(string name) =>
543-
name.ToSnakeCase();
544-
}

0 commit comments

Comments
 (0)