using Elsa.Features.Abstractions;
using Elsa.Features.Services;
using Elsa.Hosting.Management.Contracts;
using Elsa.Hosting.Management.HostedServices;
using Elsa.Hosting.Management.Options;
using Elsa.Hosting.Management.Services;
using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Hosting.Management.Features;
///
/// Installs and configures instance management features.
///
public class InstanceManagementFeature : FeatureBase
{
///
public InstanceManagementFeature(IModule module) : base(module)
{
}
///
/// A factory that instantiates an .
///
public Func InstanceNameProvider { get; set; } = sp =>
ActivatorUtilities.CreateInstance(sp);
///
/// Represents the options for heartbeat feature.
///
public Action HeartbeatOptions { get; set; } = _ => { };
///
public override void ConfigureHostedServices()
{
Module.ConfigureHostedService();
Module.ConfigureHostedService();
}
///
public override void Apply()
{
Services.Configure(HeartbeatOptions)
.AddSingleton(InstanceNameProvider);
}
}