Skip to content

Commit 7100bf4

Browse files
committed
Add parser support for compressed frames
1 parent 0dbd59a commit 7100bf4

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

src/Ultra.Core/Parser/UltraSamplerParser.cs

+18-3
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ public sealed class UltraNativeCallstackTraceEvent : TraceEvent
6868
private static readonly string[] _payloadNames =
6969
[
7070
nameof(FrameThreadId),
71+
nameof(ThreadState),
72+
nameof(ThreadCpuUsage),
73+
nameof(PreviousFrameCount),
7174
nameof(FrameSize),
7275
nameof(FrameAddresses)
7376
];
@@ -81,9 +84,15 @@ internal UltraNativeCallstackTraceEvent(Action<UltraNativeCallstackTraceEvent>?
8184

8285
public ulong FrameThreadId => (ulong)GetInt64At(0);
8386

84-
public int FrameSize => GetInt32At(8);
87+
public UltraSamplerThreadState ThreadState => (UltraSamplerThreadState)GetInt32At(8);
8588

86-
public unsafe ReadOnlySpan<ulong> FrameAddresses => new((byte*)DataStart + 12, FrameSize / sizeof(ulong));
89+
public double ThreadCpuUsage => GetInt32At(12) / 1000.0;
90+
91+
public int PreviousFrameCount => GetInt32At(16);
92+
93+
public int FrameSize => GetInt32At(20);
94+
95+
public unsafe ReadOnlySpan<ulong> FrameAddresses => new((byte*)DataStart + 24, FrameSize / sizeof(ulong));
8796

8897
/// <inheritdoc />
8998

@@ -94,8 +103,14 @@ public override object PayloadValue(int index)
94103
case 0:
95104
return FrameThreadId;
96105
case 1:
97-
return FrameSize;
106+
return (int)ThreadState;
98107
case 2:
108+
return GetInt32At(12);
109+
case 3:
110+
return PreviousFrameCount;
111+
case 4:
112+
return FrameSize;
113+
case 5:
99114
return FrameAddresses.ToArray();
100115
default:
101116
throw new ArgumentOutOfRangeException(nameof(index));

0 commit comments

Comments
 (0)