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