16-12-2022

This commit is contained in:
Jonathan Jenne
2022-12-16 15:59:26 +01:00
parent 63edd9e542
commit 45f8dd2aad
32 changed files with 431 additions and 276 deletions

View File

@@ -1,22 +1,77 @@
using DigitalData.Modules.Messaging.WCF;
using System.Net;
using ECM.JobRunner.Common.JobRunnerReference;
using System.Timers;
namespace ECM.JobRunner.Web.Data
{
public class WcfService
{
private readonly Channel<Common.JobRunnerReference.IEDMIServiceChannel> channelManager;
private ServerAddress address;
private readonly Channel<IEDMIServiceChannel> _channelManager;
private ServerAddress _address;
private bool _connected = false;
private System.Timers.Timer heartbeatTimer = new();
public readonly Common.JobRunnerReference.IEDMIServiceChannel Channel;
private IEDMIServiceChannel _channel;
public IEDMIServiceChannel Channel { get { return _channel; } }
public event EventHandler<bool>? ConnectedChanged;
public bool Connected { get { return _connected; } }
public WcfService(LoggingService Logging)
{
address.Host = "172.24.12.39";
address.Port = 9001;
_address.Host = "172.24.12.39";
_address.Port = 9001;
channelManager = new Channel<Common.JobRunnerReference.IEDMIServiceChannel>(Logging.LogConfig, address, "JobRunner");
Channel = channelManager.GetChannel();
_channelManager = new Channel<IEDMIServiceChannel>(Logging.LogConfig, _address, "JobRunner");
_channel = _channelManager.GetChannel();
_connected = true;
heartbeatTimer.Elapsed += HeartbeatTimer_Elapsed;
heartbeatTimer.Interval = 1000;
heartbeatTimer.Start();
}
private void CallConnectedChanged(bool pConnected)
{
if (ConnectedChanged != null && pConnected != _connected)
{
_connected = pConnected;
ConnectedChanged(this, pConnected);
}
}
private async void HeartbeatTimer_Elapsed(object? sender, ElapsedEventArgs e)
{
try
{
await _channel.GetHeartbeatAsync();
CallConnectedChanged(true);
}
catch (Exception)
{
CallConnectedChanged(false);
}
}
public async Task<List<ObjectType>> GetObjectTypes()
{
var resp = await _channel.GetJobConfigAsync();
if (resp == null) return new();
if (resp.OK == false) return new();
return resp.WindreamObjectTypes.ToList();
}
public async Task<List<JobType>> GetJobTypes()
{
var resp = await _channel.GetJobConfigAsync();
if (resp == null) return new();
if (resp.OK == false) return new();
return resp.JobTypes.ToList();
}
}
}