55 lines
1.4 KiB
C#
55 lines
1.4 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using App.Metrics;
|
|
using AyaNova.Util;
|
|
using System.Linq;
|
|
|
|
|
|
namespace AyaNova.Biz
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
/// called by Generator to flush metrics to reporter
|
|
///
|
|
/// </summary>
|
|
internal static class CoreJobMetricsReport
|
|
{
|
|
private static TimeSpan DO_EVERY_INTERVAL = new TimeSpan(0, 0, 20);//FLUSH EVERY 20 SECONDS
|
|
private static DateTime lastReportFlushDone = DateTime.MinValue;
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// DoAsync
|
|
//
|
|
public static async Task DoJobAsync()
|
|
{
|
|
//https://www.app-metrics.io/
|
|
IMetrics metrics = (IMetrics)ServiceProviderProvider.Provider.GetService(typeof(IMetrics));
|
|
|
|
//No more quickly than doeveryinterval
|
|
if (!DateUtil.IsAfterDuration(lastReportFlushDone, DO_EVERY_INTERVAL))
|
|
return;
|
|
|
|
//RUN ALL REPORTS - FLUSH STATS
|
|
var mr = (IMetricsRoot)metrics;
|
|
Task.WaitAll(mr.ReportRunner.RunAllAsync().ToArray());
|
|
|
|
lastReportFlushDone = DateTime.UtcNow;
|
|
|
|
//just to hide compiler warning for now
|
|
await Task.CompletedTask;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
}//eoc
|
|
|
|
|
|
}//eons
|
|
|