Change UdpListener to private

add null check on the config file.
This commit is contained in:
atef 2024-08-05 08:51:15 +02:00
parent 4e17ce2420
commit 22c82ae521
1 changed files with 20 additions and 14 deletions

View File

@ -4,12 +4,12 @@ using System.Net.Sockets;
using System.Text; using System.Text;
using System.Text.Json; using System.Text.Json;
using InnovEnergy.App.SaliMax.DataTypes; using InnovEnergy.App.SaliMax.DataTypes;
using InnovEnergy.App.SaliMax.Ess;
namespace InnovEnergy.App.SaliMax.MiddlewareClasses; namespace InnovEnergy.App.SaliMax.MiddlewareClasses;
public static class MiddlewareAgent public static class MiddlewareAgent
{ {
public static UdpClient UdpListener = null!; private static UdpClient _udpListener = null!;
private static IPAddress? _controllerIpAddress; private static IPAddress? _controllerIpAddress;
private static EndPoint? _endPoint; private static EndPoint? _endPoint;
@ -24,9 +24,9 @@ public static class MiddlewareAgent
const Int32 udpPort = 9000; const Int32 udpPort = 9000;
_endPoint = new IPEndPoint(_controllerIpAddress, udpPort); _endPoint = new IPEndPoint(_controllerIpAddress, udpPort);
UdpListener = new UdpClient(); _udpListener = new UdpClient();
UdpListener.Client.Blocking = false; _udpListener.Client.Blocking = false;
UdpListener.Client.Bind(_endPoint); _udpListener.Client.Bind(_endPoint);
} }
private static IPAddress FindVpnIp() private static IPAddress FindVpnIp()
@ -53,7 +53,7 @@ public static class MiddlewareAgent
public static Configuration? SetConfigurationFile() public static Configuration? SetConfigurationFile()
{ {
if (UdpListener.Available > 0) if (_udpListener.Available > 0)
{ {
IPEndPoint? serverEndpoint = null; IPEndPoint? serverEndpoint = null;
@ -61,20 +61,26 @@ public static class MiddlewareAgent
var replyMessage = "ACK"; var replyMessage = "ACK";
var replyData = Encoding.UTF8.GetBytes(replyMessage); var replyData = Encoding.UTF8.GetBytes(replyMessage);
var udpMessage = UdpListener.Receive(ref serverEndpoint); var udpMessage = _udpListener.Receive(ref serverEndpoint);
var message = Encoding.UTF8.GetString(udpMessage); var message = Encoding.UTF8.GetString(udpMessage);
Configuration? config = JsonSerializer.Deserialize<Configuration>(message); var config = JsonSerializer.Deserialize<Configuration>(message);
Console.WriteLine($"Received a configuration message: GridSetPoint is " + config.GridSetPoint + ", MinimumSoC is " + config.MinimumSoC + " and ForceCalibrationCharge is " + config.CalibrationChargeState+ " and CalibrationChargeDate is " + config.CalibrationChargeDate); if (config != null)
{
Console.WriteLine($"Received a configuration message: GridSetPoint is " + config.GridSetPoint +
", MinimumSoC is " + config.MinimumSoC + " and ForceCalibrationCharge is " +
config.CalibrationChargeState + " and CalibrationChargeDate is " +
config.CalibrationChargeDate);
// Send the reply to the sender's endpoint // Send the reply to the sender's endpoint
UdpListener.Send(replyData, replyData.Length, serverEndpoint); _udpListener.Send(replyData, replyData.Length, serverEndpoint);
Console.WriteLine($"Replied to {serverEndpoint}: {replyMessage}"); Console.WriteLine($"Replied to {serverEndpoint}: {replyMessage}");
return config; return config;
} }
}
if (!_endPoint.Equals((IPEndPoint)UdpListener.Client.LocalEndPoint)) if (_endPoint != null && !_endPoint.Equals(_udpListener.Client.LocalEndPoint as IPEndPoint))
{ {
Console.WriteLine("UDP address has changed, rebinding..."); Console.WriteLine("UDP address has changed, rebinding...");
InitializeCommunicationToMiddleware(); InitializeCommunicationToMiddleware();