12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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());
- 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();
- }
- }
|