Skip to content

Commit c697fbc

Browse files
committed
refactor
1 parent 3a40d09 commit c697fbc

File tree

4 files changed

+67
-45
lines changed

4 files changed

+67
-45
lines changed

src/Client/AzureManaged/DurableTaskSchedulerClientExtensions.cs

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,12 @@ public static void UseDurableTaskScheduler(
2929
TokenCredential credential,
3030
Action<DurableTaskSchedulerClientOptions>? configure = null)
3131
{
32-
builder.Services.AddOptions<DurableTaskSchedulerClientOptions>(builder.Name)
33-
.Configure(options =>
34-
{
35-
options.EndpointAddress = endpointAddress;
36-
options.TaskHubName = taskHubName;
37-
options.Credential = credential;
38-
})
39-
.Configure(configure ?? (_ => { }))
40-
.ValidateDataAnnotations()
41-
.ValidateOnStart();
42-
43-
builder.Services.TryAddEnumerable(
44-
ServiceDescriptor.Singleton<IConfigureOptions<GrpcDurableTaskClientOptions>, ConfigureGrpcChannel>());
45-
builder.UseGrpc(_ => { });
32+
ConfigureSchedulerOptions(builder, options =>
33+
{
34+
options.EndpointAddress = endpointAddress;
35+
options.TaskHubName = taskHubName;
36+
options.Credential = credential;
37+
}, configure);
4638
}
4739

4840
/// <summary>
@@ -57,15 +49,34 @@ public static void UseDurableTaskScheduler(
5749
Action<DurableTaskSchedulerClientOptions>? configure = null)
5850
{
5951
var connectionOptions = DurableTaskSchedulerClientOptions.FromConnectionString(connectionString);
52+
ConfigureSchedulerOptions(builder, options =>
53+
{
54+
options.EndpointAddress = connectionOptions.EndpointAddress;
55+
options.TaskHubName = connectionOptions.TaskHubName;
56+
options.Credential = connectionOptions.Credential;
57+
}, configure);
58+
}
6059

60+
/// <summary>
61+
/// Configures Durable Task client to use the Azure Durable Task Scheduler service using configuration options.
62+
/// </summary>
63+
/// <param name="builder">The Durable Task client builder to configure.</param>
64+
/// <param name="configure">Callback to configure DurableTaskSchedulerClientOptions.</param>
65+
public static void UseDurableTaskScheduler(
66+
this IDurableTaskClientBuilder builder,
67+
Action<DurableTaskSchedulerClientOptions>? configure = null)
68+
{
69+
ConfigureSchedulerOptions(builder, _ => { }, configure);
70+
}
71+
72+
private static void ConfigureSchedulerOptions(
73+
IDurableTaskClientBuilder builder,
74+
Action<DurableTaskSchedulerClientOptions> initialConfig,
75+
Action<DurableTaskSchedulerClientOptions>? additionalConfig)
76+
{
6177
builder.Services.AddOptions<DurableTaskSchedulerClientOptions>(builder.Name)
62-
.Configure(options =>
63-
{
64-
options.EndpointAddress = connectionOptions.EndpointAddress;
65-
options.TaskHubName = connectionOptions.TaskHubName;
66-
options.Credential = connectionOptions.Credential;
67-
})
68-
.Configure(configure ?? (_ => { }))
78+
.Configure(initialConfig)
79+
.Configure(additionalConfig ?? (_ => { }))
6980
.ValidateDataAnnotations()
7081
.ValidateOnStart();
7182

src/Worker/AzureManaged/DurableTaskSchedulerWorkerExtensions.cs

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,12 @@ public static void UseDurableTaskScheduler(
3030
TokenCredential credential,
3131
Action<DurableTaskSchedulerWorkerOptions>? configure = null)
3232
{
33-
builder.Services.AddOptions<DurableTaskSchedulerWorkerOptions>(builder.Name)
34-
.Configure(options =>
35-
{
36-
options.EndpointAddress = endpointAddress;
37-
options.TaskHubName = taskHubName;
38-
options.Credential = credential;
39-
})
40-
.Configure(configure ?? (_ => { }))
41-
.ValidateDataAnnotations()
42-
.ValidateOnStart();
43-
44-
builder.Services.TryAddEnumerable(
45-
ServiceDescriptor.Singleton<IConfigureOptions<GrpcDurableTaskWorkerOptions>, ConfigureGrpcChannel>());
46-
builder.UseGrpc(_ => { });
33+
ConfigureSchedulerOptions(builder, options =>
34+
{
35+
options.EndpointAddress = endpointAddress;
36+
options.TaskHubName = taskHubName;
37+
options.Credential = credential;
38+
}, configure);
4739
}
4840

4941
/// <summary>
@@ -58,15 +50,34 @@ public static void UseDurableTaskScheduler(
5850
Action<DurableTaskSchedulerWorkerOptions>? configure = null)
5951
{
6052
var connectionOptions = DurableTaskSchedulerWorkerOptions.FromConnectionString(connectionString);
53+
ConfigureSchedulerOptions(builder, options =>
54+
{
55+
options.EndpointAddress = connectionOptions.EndpointAddress;
56+
options.TaskHubName = connectionOptions.TaskHubName;
57+
options.Credential = connectionOptions.Credential;
58+
}, configure);
59+
}
6160

61+
/// <summary>
62+
/// Configures Durable Task worker to use the Azure Durable Task Scheduler service using configuration options.
63+
/// </summary>
64+
/// <param name="builder">The Durable Task worker builder to configure.</param>
65+
/// <param name="configure">Callback to configure DurableTaskSchedulerWorkerOptions.</param>
66+
public static void UseDurableTaskScheduler(
67+
this IDurableTaskWorkerBuilder builder,
68+
Action<DurableTaskSchedulerWorkerOptions>? configure = null)
69+
{
70+
ConfigureSchedulerOptions(builder, _ => { }, configure);
71+
}
72+
73+
private static void ConfigureSchedulerOptions(
74+
IDurableTaskWorkerBuilder builder,
75+
Action<DurableTaskSchedulerWorkerOptions> initialConfig,
76+
Action<DurableTaskSchedulerWorkerOptions>? additionalConfig)
77+
{
6278
builder.Services.AddOptions<DurableTaskSchedulerWorkerOptions>(builder.Name)
63-
.Configure(options =>
64-
{
65-
options.EndpointAddress = connectionOptions.EndpointAddress;
66-
options.TaskHubName = connectionOptions.TaskHubName;
67-
options.Credential = connectionOptions.Credential;
68-
})
69-
.Configure(configure ?? (_ => { }))
79+
.Configure(initialConfig)
80+
.Configure(additionalConfig ?? (_ => { }))
7081
.ValidateDataAnnotations()
7182
.ValidateOnStart();
7283

src/Worker/AzureManaged/DurableTaskSchedulerWorkerOptions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ internal static DurableTaskSchedulerWorkerOptions FromConnectionString(
7979
/// <returns>A configured <see cref="GrpcChannel"/> instance that can be used to make gRPC calls.</returns>
8080
public GrpcChannel CreateChannel()
8181
{
82-
Check.NotNullOrEmpty(this.EndpointAddress, nameof(this.EndpointAddress));
83-
Check.NotNullOrEmpty(this.TaskHubName, nameof(this.TaskHubName));
82+
Verify.NotNull(this.EndpointAddress, nameof(this.EndpointAddress));
83+
Verify.NotNull(this.TaskHubName, nameof(this.TaskHubName));
8484
string taskHubName = this.TaskHubName;
8585
string endpoint = !this.EndpointAddress.Contains("://")
8686
? $"https://{this.EndpointAddress}"

test/Client/AzureManaged.Tests/DurableTaskSchedulerClientExtensionsTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT License.
33

4+
using System.ComponentModel.DataAnnotations;
45
using Azure.Core;
56
using Azure.Identity;
67
using FluentAssertions;
@@ -10,7 +11,6 @@
1011
using Microsoft.Extensions.DependencyInjection;
1112
using Microsoft.Extensions.Options;
1213
using Moq;
13-
using System.ComponentModel.DataAnnotations;
1414
using Xunit;
1515

1616
namespace Microsoft.DurableTask.Client.AzureManaged.Tests;

0 commit comments

Comments
 (0)