// using System; // using System.Threading.Tasks; // using App.Metrics; // using AyaNova.Util; // using System.Linq; // namespace AyaNova.Biz // { // /// // /// called by Generator to flush metrics to reporter // /// // /// // 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()); // await Task.WhenAll(mr.ReportRunner.RunAllAsync()); // lastReportFlushDone = DateTime.UtcNow; // //just to hide compiler warning for now // // await Task.CompletedTask; // // var scheduler = new AppMetricsTaskScheduler( // // TimeSpan.FromSeconds(3), // // async () => // // { // // await Task.WhenAll(metrics.ReportRunner.RunAllAsync()); // // }); // // scheduler.Start(); // } // ///////////////////////////////////////////////////////////////////// // }//eoc // }//eons