using linker.config; using linker.messenger.relay.client; using linker.messenger.relay.client.transport; using linker.messenger.relay.server; using linker.messenger.relay.server.caching; using linker.messenger.relay.server.validator; using linker.plugins.relay.client; using linker.plugins.relay.messenger; using linker.plugins.relay.server; using linker.plugins.relay.server.validator; using linker.startup; using MemoryPack; using Microsoft.Extensions.DependencyInjection; namespace linker.plugins.relay { /// /// 中继插件 /// public sealed class RelayStartup : IStartup { public StartupLevel Level => StartupLevel.Normal; public string Name => "relay"; public bool Required => false; public string[] Dependent => new string[] { "messenger", "signin", "serialize", "config" }; public StartupLoadType LoadType => StartupLoadType.Normal; public void AddClient(ServiceCollection serviceCollection, FileConfig config) { serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); MemoryPackFormatterProvider.Register(new RelayTestInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayServerNodeReportInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayAskResultInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayCacheInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayMessageInfoFormatter()); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); } public void AddServer(ServiceCollection serviceCollection, FileConfig config) { serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); MemoryPackFormatterProvider.Register(new RelayTestInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayServerNodeReportInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayAskResultInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayCacheInfoFormatter()); MemoryPackFormatterProvider.Register(new RelayMessageInfoFormatter()); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); } public void UseClient(ServiceProvider serviceProvider, FileConfig config) { RelayClientTransfer relayTransfer = serviceProvider.GetService(); RelayClientTypesLoader relayTypesLoader = serviceProvider.GetService(); } public void UseServer(ServiceProvider serviceProvider, FileConfig config) { RelayServerValidatorTypeLoader relayValidatorTypeLoader = serviceProvider.GetService(); IRelayServerCaching relayCaching = serviceProvider.GetService(); PlusRelayServerReportResolver relayReportResolver = serviceProvider.GetService(); RelayServerMasterTransfer relayServerMasterTransfer = serviceProvider.GetService(); RelayServerNodeTransfer relayServerNodeTransfer = serviceProvider.GetService(); } } }