Files
SecMPS/gateway/src/IntegrationGateway.Host/Program.cs

65 lines
1.9 KiB
C#

using IntegrationGateway.Core.Infrastructure;
using IntegrationGateway.Adapters.Owl;
using IntegrationGateway.Adapters.MC4;
using IntegrationGateway.Host;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddMemoryCache();
builder.Services.AddSingleton<AdapterRegistry>();
builder.Services.AddSingleton<TokenManager>();
builder.Services.AddHttpClient("VolPro", c =>
{
c.BaseAddress = new Uri(builder.Configuration["VolProBaseUrl"] ?? "http://localhost:9100");
});
builder.Services.AddSingleton<GatewayClient>();
var app = builder.Build();
app.MapControllers();
// 启动时自动向 Vol.Pro 注册
app.Lifetime.ApplicationStarted.Register(() =>
{
Task.Run(async () =>
{
var gw = app.Services.GetRequiredService<GatewayClient>();
var registry = app.Services.GetRequiredService<AdapterRegistry>();
// 注册 Owl 适配器
var owlCfg = builder.Configuration.GetSection("Owl");
var owlHttp = app.Services.GetRequiredService<IHttpClientFactory>().CreateClient("VolPro");
var owlAdapter = new OwlAdapter(
"Owl:main",
owlHttp,
owlCfg["BaseUrl"] ?? "http://localhost:15123",
owlCfg["Username"] ?? "admin",
owlCfg["Password"] ?? "admin"
);
registry.Register(owlAdapter);
// 注册 MC4 适配器
var mc4Cfg = builder.Configuration.GetSection("MC4");
var mc4Http = app.Services.GetRequiredService<IHttpClientFactory>().CreateClient("VolPro");
var mc4Adapter = new Mc4Adapter(
"MC4:31ku",
mc4Http,
mc4Cfg["BaseUrl"] ?? "http://localhost:3000"
);
registry.Register(mc4Adapter);
try
{
var result = await gw.RegisterAsync();
Console.WriteLine($"[Gateway] Registered as NodeId={result?.NodeId}, Devices={result?.Devices.Count ?? 0}");
}
catch (Exception ex)
{
Console.WriteLine($"[Gateway] Registration failed: {ex.Message}");
}
});
});
app.Run();