| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | namespace EEMSServerCore;public class EEMSBaseServer : IDisposable{    public WebApplication? WebApplication { get; private set; }    public bool Initialize(IEEMSBaseServerProvider provider, out IClientProvider? clientProvider, long messageSize = 26144)//26144:256kb    {        clientProvider = null;        if (WebApplication is not null)            return false;        WebApplicationBuilder builder = WebApplication.CreateBuilder();        builder.Services.AddSignalR(            options =>            {                options.EnableDetailedErrors = true;                options.MaximumReceiveMessageSize = messageSize;            });        clientProvider = new ClientCaller();        builder.Services.AddHostedService<HostLifeTime>();        builder.Services.AddSingleton<DeviceManager>();        builder.Services.AddSingleton<ClientManager>();        builder.Services.AddSingleton<IUIProvider, UICaller>();        builder.Services.AddSingleton<IClientProvider>(clientProvider);        builder.Services.AddSingleton<IEEMSBaseServerProvider>(provider);        builder.Services.AddSingleton<SqlSugarCustom>();        WebApplication = builder.Build();        WebApplication.MapHub<UIHub>("/UIHub");        WebApplication.MapHub<ClientsMainHub>("/ClientHub");        return true;    }    public async Task<bool> StartServiceAsync(string ip, ushort port)    {        if (WebApplication is null)            return false;        if (string.IsNullOrEmpty(ip) || port < 1000)            return false;        try        {            await WebApplication.RunAsync($"http://{ip}:{port}");        }        catch        {            return false;        }        return true;    }    #region Dispose    private bool disposedValue;    protected virtual void Dispose(bool disposing)    {        if (!disposedValue)        {            if (disposing)            {                // TODO: dispose managed state (managed objects)                this.WebApplication?.DisposeAsync().AsTask().Wait();                this.WebApplication = null;            }            // TODO: free unmanaged resources (unmanaged objects) and override finalizer            // TODO: set large fields to null            disposedValue = true;        }    }    // // TODO: override finalizer only if 'Dispose(bool disposing)' has code to free unmanaged resources    // ~EEMS_Server()    // {    //     // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method    //     Dispose(disposing: false);    // }    public void Dispose()    {        // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method        Dispose(disposing: true);        GC.SuppressFinalize(this);    }    #endregion}public interface IEEMSBaseServerProvider{    void Started();    void OnConnected(string ip, ushort port, ServiceHub serviceHub);    void OnDisConnected(string ip, ushort port, ServiceHub serviceHub);}public enum ServiceHub{    Undefined,    ClientHub,    UIHub}
 |