93 lines
2.6 KiB
C#
93 lines
2.6 KiB
C#
using DigitalData.Modules.Messaging.WCF;
|
|
using ECM.JobRunner.Common;
|
|
|
|
namespace ECM.JobRunner.Web.Data
|
|
{
|
|
public class ApiService
|
|
{
|
|
private readonly Channel<Common.JobRunnerReference.IEDMIServiceChannel> channelManager;
|
|
private readonly Common.JobRunnerReference.IEDMIServiceChannel channel;
|
|
private ServerAddress address;
|
|
|
|
private System.Timers.Timer pollingTimer = new();
|
|
|
|
public event EventHandler<ApiStatusResponse> DataUpdated;
|
|
|
|
public ApiService(LoggingService Logging, WcfService Wcf)
|
|
{
|
|
channel = Wcf.Channel;
|
|
|
|
pollingTimer.Elapsed += PollingTimer_Elapsed;
|
|
pollingTimer.Interval = 1000;
|
|
pollingTimer.Start();
|
|
}
|
|
|
|
protected virtual void OnDataUpdated(ApiStatusResponse e)
|
|
{
|
|
EventHandler<ApiStatusResponse> handler = DataUpdated;
|
|
if (handler != null)
|
|
{
|
|
handler(this, e);
|
|
}
|
|
}
|
|
|
|
private async void PollingTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
|
{
|
|
OnDataUpdated(await GetData());
|
|
}
|
|
|
|
public async Task<List<Common.JobRunnerReference.JobDefinition>?> GetJobList()
|
|
{
|
|
var resp = await channel.GetJobConfigAsync();
|
|
|
|
if (resp != null && resp.OK)
|
|
{
|
|
return resp.JobDefinitions.ToList();
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public async Task<ApiStatusResponse> GetData()
|
|
{
|
|
DateTime heartbeat = await GetHeartbeat();
|
|
List<Common.JobRunnerReference.HistoryItem> jobHistory = await GetHistoryEntries();
|
|
|
|
return new ApiStatusResponse()
|
|
{
|
|
heartbeat = heartbeat,
|
|
jobHistory = jobHistory.OrderByDescending(e => e.CreatedAt).Take(10).ToList()
|
|
};
|
|
}
|
|
|
|
private async Task<DateTime> GetHeartbeat()
|
|
{
|
|
return await channel.GetHeartbeatAsync();
|
|
}
|
|
|
|
private async Task<List<Common.JobRunnerReference.HistoryItem>> GetHistoryEntries()
|
|
{
|
|
try
|
|
{
|
|
var oResponse = await channel.GetJobHistoryAsync();
|
|
|
|
if (oResponse.OK)
|
|
{
|
|
return oResponse.Items.ToList();
|
|
}
|
|
else
|
|
{
|
|
return new();
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|