61 lines
1.4 KiB
C#
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);
|
|
}
|