using Salmon.Core; using System.Diagnostics; Console.WriteLine($"Salmon.Service initializing..."); string uri_args = args.LastOrDefault(); // Arguments parsing string period_str = Environment.GetEnvironmentVariable("SALMON_PERIOD") ?? "60000"; int period; if (!int.TryParse(period_str, out period)) { Console.WriteLine($"Cannot parse env variable SALMON_PERIOD, should be an int in milliseconds."); return 1; } string uri_str = uri_args ?? Environment.GetEnvironmentVariable("SALMON_URI"); if (uri_str == null) { Console.WriteLine($"Cannot find env variable SALMON_URI, should be a valid URL."); Console.WriteLine($"You may also use cmd line, uri must be the last argument."); return 2; } Uri uri; if(!Uri.TryCreate(uri_str, UriKind.Absolute, out uri)) { Console.WriteLine($"Cannot parse env variable SALMON_URI ({uri_str}), it should be a valid URL."); return 3; } // Initialisation Transmitter transmitter = new(); Console.WriteLine($"Salmon.Service started at {DateTime.Now}."); while ( true ) { var hardwares = Salmon.Model.Monitor.Hardware.FromAllHardware(); var software = Salmon.Model.Monitor.Software.FromLocal(); List tosend = new(); tosend.Add(software); tosend.AddRange(hardwares); try { await transmitter.SendAsync(uri, tosend); } catch(Exception e) { Console.WriteLine($"Sending data failed: {e}"); } await Task.Delay(period); }