Files
linker/linker.messenger.forward/Entry.cs
snltty 0ad8e6ebfa sync
2025-01-01 19:01:07 +08:00

58 lines
2.3 KiB
C#

using linker.messenger.api;
using linker.messenger.decenter;
using linker.messenger.forward.proxy;
using Microsoft.Extensions.DependencyInjection;
namespace linker.messenger.forward
{
public static class Entry
{
public static ServiceCollection AddForwardClient(this ServiceCollection serviceCollection)
{
serviceCollection.AddSingleton<ForwardApiController>();
serviceCollection.AddSingleton<ForwardTransfer>();
serviceCollection.AddSingleton<ForwardClientMessenger>();
serviceCollection.AddSingleton<ForwardDecenter>();
serviceCollection.AddSingleton<ForwardProxy>();
return serviceCollection;
}
public static ServiceProvider UseForwardClient(this ServiceProvider serviceProvider)
{
IApiServer apiServer = serviceProvider.GetService<IApiServer>();
apiServer.AddPlugins(new List<libs.api.IApiController> { serviceProvider.GetService<ForwardApiController>() });
ForwardTransfer forwardTransfer = serviceProvider.GetService<ForwardTransfer>();
IMessengerResolver messengerResolver = serviceProvider.GetService<IMessengerResolver>();
messengerResolver.AddMessenger(new List<IMessenger> { serviceProvider.GetService<ForwardClientMessenger>() });
DecenterClientTransfer decenterClientTransfer = serviceProvider.GetService<DecenterClientTransfer>();
decenterClientTransfer.AddDecenters(new List<IDecenter> { serviceProvider.GetService<ForwardDecenter>() });
ForwardProxy forwardProxy= serviceProvider.GetService<ForwardProxy>();
return serviceProvider;
}
public static ServiceCollection AddForwardServer(this ServiceCollection serviceCollection)
{
serviceCollection.AddSingleton<ForwardServerMessenger>();
return serviceCollection;
}
public static ServiceProvider UseForwardServer(this ServiceProvider serviceProvider)
{
IMessengerResolver messengerResolver = serviceProvider.GetService<IMessengerResolver>();
messengerResolver.AddMessenger(new List<IMessenger> { serviceProvider.GetService<ForwardServerMessenger>() });
return serviceProvider;
}
}
}