refactor activity monitor
This commit is contained in:
@@ -6,8 +6,7 @@ namespace SharpIDE.Godot.Features.ActivityListener;
|
||||
|
||||
public class ActivityMonitor
|
||||
{
|
||||
public EventWrapper<Activity, Task> ActivityStarted { get; } = new(_ => Task.CompletedTask);
|
||||
public EventWrapper<Activity, Task> ActivityStopped { get; } = new(_ => Task.CompletedTask);
|
||||
public EventWrapper<Activity, Task> ActivityChanged { get; } = new(_ => Task.CompletedTask);
|
||||
|
||||
public ActivityMonitor()
|
||||
{
|
||||
@@ -15,8 +14,8 @@ public class ActivityMonitor
|
||||
{
|
||||
ShouldListenTo = source => source == SharpIdeOtel.Source,
|
||||
Sample = (ref ActivityCreationOptions<ActivityContext> _) => ActivitySamplingResult.PropagationData,
|
||||
ActivityStarted = activity => ActivityStarted.InvokeParallelFireAndForget(activity),
|
||||
ActivityStopped = activity => ActivityStopped.InvokeParallelFireAndForget(activity),
|
||||
ActivityStarted = activity => ActivityChanged.InvokeParallelFireAndForget(activity),
|
||||
ActivityStopped = activity => ActivityChanged.InvokeParallelFireAndForget(activity),
|
||||
};
|
||||
|
||||
ActivitySource.AddActivityListener(listener);
|
||||
|
||||
@@ -23,21 +23,17 @@ public partial class RunningTasksDisplay : HBoxContainer
|
||||
_solutionLoadingLabel = GetNode<Label>("%SolutionLoadingLabel");
|
||||
_solutionDiagnosticsLabel = GetNode<Label>("%SolutionDiagnosticsLabel");
|
||||
Visible = false;
|
||||
_activityMonitor.ActivityStarted.Subscribe(OnActivityStarted);
|
||||
_activityMonitor.ActivityStopped.Subscribe(OnActivityStopped);
|
||||
_activityMonitor.ActivityChanged.Subscribe(OnActivityChanged);
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
{
|
||||
_activityMonitor.ActivityStarted.Unsubscribe(OnActivityStarted);
|
||||
_activityMonitor.ActivityStopped.Unsubscribe(OnActivityStopped);
|
||||
|
||||
_activityMonitor.ActivityChanged.Unsubscribe(OnActivityChanged);
|
||||
}
|
||||
|
||||
private async Task OnActivityStarted(Activity activity) => await OnActivityChanged(activity, true);
|
||||
private async Task OnActivityStopped(Activity activity) => await OnActivityChanged(activity, false);
|
||||
private async Task OnActivityChanged(Activity activity, bool isOccurring)
|
||||
private async Task OnActivityChanged(Activity activity)
|
||||
{
|
||||
var isOccurring = !activity.IsStopped;
|
||||
if (activity.DisplayName == $"{nameof(RoslynAnalysis)}.{nameof(RoslynAnalysis.UpdateSolutionDiagnostics)}")
|
||||
{
|
||||
_isSolutionDiagnosticsBeingRetrieved = isOccurring;
|
||||
|
||||
Reference in New Issue
Block a user