| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | using Comal.Classes;using Comal.Stores;using InABox.Clients;using InABox.Configuration;using InABox.Core;using InABox.Rpc;using InABox.Wpf.Reports;using PRS.Shared;using PRSServer;using PRSServices;using System;using System.Threading;using System.Threading.Tasks;namespace PRSLicensing;public class LicensingEngine : Engine<LicensingEngineProperties>{    private Listener<LicensingHandler, LicensingHandlerProperties> listener;    public override void Run()    {        Logger.Send(LogType.Information, "", "Starting..");        if (string.IsNullOrWhiteSpace(Properties.Server))        {            Logger.Send(LogType.Error, "", "Server is blank!");            return;        }        var transport = new RpcClientPipeTransport(DatabaseServerProperties.GetPipeName(Properties.Server, true));        ClientFactory.SetClientType(typeof(RpcClient<>), Platform.LicensingEngine, Version, transport);        CheckConnection();                Logger.Send(LogType.Information, "", "Registering Classes");        StoreUtils.RegisterClasses();        CoreUtils.RegisterClasses();        ComalUtils.RegisterClasses();        PRSSharedUtils.RegisterClasses();        ReportUtils.RegisterClasses();        ConfigurationUtils.RegisterClasses();        Logger.Send(LogType.Information, "", "Starting Listener on port " + Properties.ListenPort);        try        {            listener = new Listener<LicensingHandler, LicensingHandlerProperties>(new LicensingHandlerProperties(Properties));            listener.InitHTTPS((ushort)Properties.ListenPort, CertificateFileName());            Logger.Send(LogType.Information, "", "Starting Web Listener on port " + Properties.ListenPort);            listener.Start();        }        catch (Exception eListen)        {            Logger.Send(LogType.Error, ClientFactory.UserID, eListen.Message);        }    }    private string CertificateFileName() => Properties.CertificateFile;    private void CheckConnection()    {        // Wait for server connection        while (!Client.Ping())        {            Logger.Send(LogType.Error, "", "Database server unavailable. Trying again in 30 seconds...");            Task.Delay(30_000).Wait();            Logger.Send(LogType.Information, "", "Retrying connection...");        }        ClientFactory.SetBypass();    }    public override void Stop()    {        Logger.Send(LogType.Information, "", "Stopping");        listener?.Stop();    }}
 |