diff --git a/Barsik.csproj b/Barsik.csproj
index 7147de0..b0b65bf 100644
--- a/Barsik.csproj
+++ b/Barsik.csproj
@@ -2,13 +2,12 @@
Exe
- netcoreapp2.1
+ netcoreapp3.1
Barsik.Program
-
diff --git a/MDStatMonitoringUnit.cs b/MDStatMonitoringUnit.cs
index 53ccbae..88182ef 100644
--- a/MDStatMonitoringUnit.cs
+++ b/MDStatMonitoringUnit.cs
@@ -1,8 +1,8 @@
-using IniParser.Model;
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
+using System.Text.Json;
using System.Threading;
namespace Barsik
@@ -21,7 +21,7 @@ namespace Barsik
///
class MDStatMonitoringUnit : BaseMonitoringUnit
{
- public MDStatMonitoringUnit(SectionData config, RegistersContainer registers) : base(config, registers)
+ public MDStatMonitoringUnit(JsonElement config, RegistersContainer registers) : base(config, registers)
{
}
diff --git a/MonitoringUnit.cs b/MonitoringUnit.cs
index 88c5f4c..23caff9 100644
--- a/MonitoringUnit.cs
+++ b/MonitoringUnit.cs
@@ -1,29 +1,29 @@
-using IniParser.Model;
-using System;
+using System;
+using System.Text.Json;
namespace Barsik
{
class BaseMonitoringUnit
{
- protected SectionData config;
+ protected JsonElement config;
protected RegistersContainer registers;
protected int baseAddress;
- public BaseMonitoringUnit(SectionData config, RegistersContainer registers)
+ public BaseMonitoringUnit(JsonElement config, RegistersContainer registers)
{
- this.config = config;
+ this.config = config.Clone();
this.registers = registers;
- baseAddress = int.Parse(config.Keys["BaseAddress"]);
+ baseAddress = config.GetProperty("BaseAddress").GetInt32();
}
public virtual void Run()
{
}
- public static BaseMonitoringUnit Create(SectionData config, RegistersContainer registers)
+ public static BaseMonitoringUnit Create(JsonElement config, RegistersContainer registers)
{
- var type = config.Keys["Type"];
+ var type = config.GetProperty("Type").GetString();
if (type == "Sensors")
{
return new SensorsMonitoringUnit(config, registers);
diff --git a/Program.cs b/Program.cs
index acbed3f..aa7a99a 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,11 +1,11 @@
-using IniParser;
-using NLog;
+using NLog;
using System.Collections.Generic;
using System.CommandLine;
using System.CommandLine.Invocation;
using System.Globalization;
using System.IO;
using System.Reflection;
+using System.Text.Json;
using System.Threading;
namespace Barsik
@@ -30,7 +30,7 @@ namespace Barsik
rootCommand.InvokeAsync(args).Wait();
}
- static void RunService(string configPath)
+ static void RunService(string config)
{
Logging.Setup();
logger.Info("Barsik monitoring service starting");
@@ -39,18 +39,20 @@ namespace Barsik
var server = new ModbusServer(registers);
units = new List();
- var configParser = new FileIniDataParser();
- if (string.IsNullOrEmpty(configPath))
+ if (string.IsNullOrEmpty(config))
{
string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
- configPath = Path.Combine(assemblyFolder, "barsik.ini");
+ config = Path.Combine(assemblyFolder, "barsik.json");
}
- var data = configParser.ReadFile(configPath);
- foreach (var section in data.Sections)
+ string configStr = File.ReadAllText(config);
+ int port = 0;
+ using (JsonDocument doc = JsonDocument.Parse(configStr))
{
- if (section.SectionName.StartsWith("Unit"))
+ var root = doc.RootElement;
+ port = root.GetProperty("Port").GetInt32();
+ foreach (var unitElement in root.GetProperty("Units").EnumerateArray())
{
- var unit = BaseMonitoringUnit.Create(section, registers);
+ var unit = BaseMonitoringUnit.Create(unitElement, registers);
if (unit != null)
{
units.Add(unit);
@@ -60,7 +62,7 @@ namespace Barsik
}
}
logger.Info("Configuration loaded, we have " + units.Count + " units");
- server.Port = int.Parse(data["Server"]["Port"]);
+ server.Port = port;
server.Run();
logger.Info("Exiting");
}
diff --git a/SensorsMonitoringUnit.cs b/SensorsMonitoringUnit.cs
index b5cd164..4c4fcca 100644
--- a/SensorsMonitoringUnit.cs
+++ b/SensorsMonitoringUnit.cs
@@ -1,5 +1,5 @@
-using IniParser.Model;
-using System;
+using System;
+using System.Text.Json;
using System.Threading;
namespace Barsik
@@ -12,14 +12,14 @@ namespace Barsik
{
const string CORE_STR = "Core{0} Temp:";
- public SensorsMonitoringUnit(SectionData config, RegistersContainer registers) : base(config, registers)
+ public SensorsMonitoringUnit(JsonElement config, RegistersContainer registers) : base(config, registers)
{
}
public override void Run()
{
- int cores = int.Parse(config.Keys["Cores"]);
- var multiplier = float.Parse(config.Keys["Multiplier"]);
+ int cores = config.GetProperty("Cores").GetInt32();
+ var multiplier = config.GetProperty("Multiplier").GetDouble();
while (true)
{
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("sensors");
diff --git a/barsik.ini.sample b/barsik.ini.sample
deleted file mode 100644
index 71280e9..0000000
--- a/barsik.ini.sample
+++ /dev/null
@@ -1,12 +0,0 @@
-[Server]
-Port = 4500
-
-[Unit_CPU]
-Type = Sensors
-BaseAddress = 1
-Multiplier = 100
-Cores = 2
-
-[Unit_RAID]
-Type = MDStat
-BaseAddress = 3
diff --git a/barsik.json.sample b/barsik.json.sample
new file mode 100644
index 0000000..694665f
--- /dev/null
+++ b/barsik.json.sample
@@ -0,0 +1,17 @@
+{
+ "Port": 4500,
+ "Units": [
+ {
+ "Name": "CPU",
+ "Type": "Sensors",
+ "BaseAddress": 1,
+ "Multiplier": 100,
+ "Cores": 2
+ },
+ {
+ "Name": "RAID",
+ "Type": "MDStat",
+ "BaseAddress": 3
+ }
+ ]
+}