Initial commit

This commit is contained in:
Zhongwei Li
2025-11-29 17:58:35 +08:00
commit 2448fbf2fb
25 changed files with 2940 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
namespace {{ModuleName}};
/// <summary>
/// The main {{ModuleName}}Service.
/// </summary>
public sealed partial class {{ModuleName}}Service : IHostedService
{
private readonly IHostApplicationLifetime hostApplication;
private readonly IModuleClientWrapper moduleClient;
public {{ModuleName}}Service(
ILogger<{{ModuleName}}Service> logger,
IHostApplicationLifetime hostApplication,
IModuleClientWrapper moduleClient)
{
this.logger = logger;
this.hostApplication = hostApplication;
this.moduleClient = moduleClient;
}
public async Task StartAsync(CancellationToken cancellationToken)
{
hostApplication.ApplicationStarted.Register(OnStarted);
hostApplication.ApplicationStopping.Register(OnStopping);
hostApplication.ApplicationStopped.Register(OnStopped);
moduleClient.SetConnectionStatusChangesHandler(LogConnectionStatusChange);
await moduleClient.OpenAsync(cancellationToken);
// TODO: Register direct method handlers here
//// await moduleClient.SetMethodHandlerAsync("MethodName", HandleMethodAsync, string.Empty, cancellationToken);
LogModuleClientStarted({{ModuleName}}Constants.ModuleId);
}
public async Task StopAsync(CancellationToken cancellationToken)
{
try
{
await moduleClient.CloseAsync(cancellationToken);
}
catch (OperationCanceledException)
{
// Cancellation is expected during shutdown — safe to ignore
}
LogModuleClientStopped({{ModuleName}}Constants.ModuleId);
}
private void OnStarted()
=> LogModuleStarted({{ModuleName}}Constants.ModuleId);
private void OnStopping()
=> LogModuleStopping({{ModuleName}}Constants.ModuleId);
private void OnStopped()
=> LogModuleStopped({{ModuleName}}Constants.ModuleId);
}