16-12-2022
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user