123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using FISLib;
- using System.Diagnostics;
- using Vinno.vCloud.FIS.CrossPlatform.Linux;
- using Vinno.vCloud.FIS.CrossPlatform.Linux.Hardware;
- namespace FIS.Linux
- {
- internal class Program
- {
- private static readonly ManualResetEvent _manualResetEvent = new ManualResetEvent(false);
- private static void Main(string[] args)
- {
- try
- {
- Console.WriteLine($"FIS.Linux Init Begin");
- string logPath = string.Empty;
- if (args.Length == 1)
- {
- logPath = args[0];
- }
- FISIMPL.FISIMPL.InitFISLogPath(logPath);
- AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
- _manualResetEvent.Reset();
- FISIMPL.FISIMPL.CloseFISExeEvent += OnCloseFISExe;
- FISLinux.Initialize(FISIMPL.FISIMPL.FISLogBasePath);
- var machineId = CpuInfo.MachineId;
- FISIMPL.FISIMPL.Start(machineId, FISPlatform.Linux);
- Console.WriteLine($"FIS.Linux Init Finished");
- while (true)
- {
- Thread.Sleep(1000);
- }
- }
- catch (Exception ex)
- {
- var errorMsg = $"FIS.Linux Main Error:{ex}";
- FISIMPL.FISIMPL.WriteErrorLog(errorMsg);
- Console.WriteLine(errorMsg);
- Process.GetCurrentProcess().Kill();
- }
- }
- private static void OnCloseFISExe(object? sender, EventArgs e)
- {
- try
- {
- var msg = $"FIS.Linux OnCloseFISExe Invoke!!!";
- FISIMPL.FISIMPL.WriteInfoLog(msg);
- Console.WriteLine(msg);
- FISIMPL.FISIMPL.CloseFISExeEvent -= OnCloseFISExe;
- Task.Run(() => KillSelf());
- FISIMPL.FISIMPL.Stop();
- _manualResetEvent.Set();
- }
- catch (Exception ex)
- {
- var errorMsg = $"FIS.Linux OnCloseFISExe Error:{ex}";
- FISIMPL.FISIMPL.WriteErrorLog(errorMsg);
- Console.WriteLine(errorMsg);
- Process.GetCurrentProcess().Kill();
- }
- }
- private static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
- {
- var msg = $"FIS.Linux OnUnhandledException Invoke:{e.ExceptionObject}";
- FISIMPL.FISIMPL.WriteInfoLog(msg);
- Console.WriteLine(msg);
- }
- private static void KillSelf()
- {
- _manualResetEvent.WaitOne(5000);
- Process.GetCurrentProcess().Kill();
- }
- }
- }
|