Salmon/Salmon.Service/Program.cs
2024-04-11 21:30:36 +02:00

61 lines
1.4 KiB
C#

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<Element> 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);
}