Skip to content

Commit 69ebc86

Browse files
Copilotaaronpowell
andcommitted
Refactor Dapr to use IDistributedApplicationEventingSubscriber
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
1 parent 414747e commit 69ebc86

File tree

2 files changed

+13
-16
lines changed

2 files changed

+13
-16
lines changed

src/CommunityToolkit.Aspire.Hosting.Dapr/DaprDistributedApplicationLifecycleHook.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using Aspire.Hosting;
55
using Aspire.Hosting.ApplicationModel;
66
using Aspire.Hosting.Eventing;
7+
using Aspire.Hosting.Lifecycle;
78
using Aspire.Hosting.Utils;
89
using Microsoft.Extensions.Configuration;
910
using Microsoft.Extensions.DependencyInjection;
@@ -22,14 +23,22 @@ internal sealed class DaprDistributedApplicationLifecycleHook(
2223
IConfiguration configuration,
2324
IHostEnvironment environment,
2425
ILogger<DaprDistributedApplicationLifecycleHook> logger,
25-
IOptions<DaprOptions> options) : IDisposable
26+
IOptions<DaprOptions> options,
27+
DistributedApplicationExecutionContext executionContext) : IDistributedApplicationEventingSubscriber, IDisposable
2628
{
2729
private readonly DaprOptions _options = options.Value;
2830

2931
private string? _onDemandResourcesRootPath;
3032

31-
public async Task BeforeStartAsync(DistributedApplicationModel appModel, CancellationToken cancellationToken = default)
33+
public Task SubscribeAsync(IDistributedApplicationEventing eventing, DistributedApplicationExecutionContext executionContext, CancellationToken cancellationToken)
3234
{
35+
eventing.Subscribe<BeforeStartEvent>(OnBeforeStartAsync);
36+
return Task.CompletedTask;
37+
}
38+
39+
private async Task OnBeforeStartAsync(BeforeStartEvent @event, CancellationToken cancellationToken = default)
40+
{
41+
var appModel = @event.Model;
3342
string appHostDirectory = GetAppHostDirectory();
3443

3544
// Set up WaitAnnotations for Dapr components based on their value provider dependencies

src/CommunityToolkit.Aspire.Hosting.Dapr/IDistributedApplicationBuilderExtensions.cs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using Aspire.Hosting.ApplicationModel;
5-
using Aspire.Hosting.Eventing;
5+
using Aspire.Hosting.Lifecycle;
66
using Aspire.Hosting.Publishing;
77
using Aspire.Hosting.Utils;
88
using CommunityToolkit.Aspire.Hosting.Dapr;
9-
using Microsoft.Extensions.Configuration;
109
using Microsoft.Extensions.DependencyInjection;
11-
using Microsoft.Extensions.Hosting;
1210
using Microsoft.Extensions.Logging;
13-
using Microsoft.Extensions.Options;
1411

1512
namespace Aspire.Hosting;
1613

@@ -33,16 +30,7 @@ public static IDistributedApplicationBuilder AddDapr(this IDistributedApplicatio
3330
builder.Services.Configure(configure);
3431
}
3532

36-
builder.Eventing.Subscribe<BeforeStartEvent>(async (evt, ct) =>
37-
{
38-
var hook = new DaprDistributedApplicationLifecycleHook(
39-
evt.Services.GetRequiredService<IConfiguration>(),
40-
evt.Services.GetRequiredService<IHostEnvironment>(),
41-
evt.Services.GetRequiredService<ILogger<DaprDistributedApplicationLifecycleHook>>(),
42-
evt.Services.GetRequiredService<IOptions<DaprOptions>>());
43-
44-
await hook.BeforeStartAsync(evt.Model, ct).ConfigureAwait(false);
45-
});
33+
builder.Services.TryAddEventingSubscriber<DaprDistributedApplicationLifecycleHook>();
4634

4735
return builder;
4836
}

0 commit comments

Comments
 (0)