using XFEExtension.NetCore.AutoImplement;
using XFEExtension.NetCore.ServerInteractive.Implements.ServerService;
using XFEExtension.NetCore.ServerInteractive.Interfaces.ServerService;
namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server;
///
/// XFE服务器
///
[CreateImpl]
public class XFEServer
{
internal readonly List ServerInitializerServiceList = [];
internal readonly List ServerServiceList = [];
internal readonly List AsyncServerServiceList = [];
///
/// 核心服务器处理服务
///
public IServerCoreProcessService ServerCoreProcessService { get; set; } = new ServerCoreProcessServiceBaseImpl();
///
/// 启动服务器
///
///
public async Task Start()
{
foreach (var serverInitializerService in ServerInitializerServiceList)
serverInitializerService.Initialize();
foreach (var serverService in ServerServiceList)
serverService.StartService();
foreach (var asyncServerService in AsyncServerServiceList)
await asyncServerService.StartServiceAsync();
await ServerCoreProcessService.ProcessServerCore();
}
}