mirror of
https://github.com/NicolasConstant/BirdsiteLive
synced 2025-06-05 21:49:16 +02:00
added extraction statistics
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
using System.Threading;
|
||||
using System.Timers;
|
||||
|
||||
namespace BirdsiteLive.Domain.Statistics
|
||||
{
|
||||
public interface IExtractionStatisticsHandler
|
||||
{
|
||||
void ExtractedDescription(int mentionsCount);
|
||||
void ExtractedStatus(int mentionsCount);
|
||||
ExtractionStatistics GetStatistics();
|
||||
}
|
||||
|
||||
public class ExtractionStatisticsHandler : IExtractionStatisticsHandler
|
||||
{
|
||||
private static int _lastDescriptionMentionsExtracted;
|
||||
private static int _lastStatusMentionsExtracted;
|
||||
|
||||
private static int _descriptionMentionsExtracted;
|
||||
private static int _statusMentionsExtracted;
|
||||
|
||||
private static System.Timers.Timer _resetTimer;
|
||||
|
||||
#region Ctor
|
||||
public ExtractionStatisticsHandler()
|
||||
{
|
||||
if (_resetTimer == null)
|
||||
{
|
||||
_resetTimer = new System.Timers.Timer();
|
||||
_resetTimer.Elapsed += OnTimeResetEvent;
|
||||
_resetTimer.Interval = 24 * 60 * 60 * 1000; // 24h
|
||||
_resetTimer.Enabled = true;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void OnTimeResetEvent(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
_lastDescriptionMentionsExtracted = _descriptionMentionsExtracted;
|
||||
_lastStatusMentionsExtracted = _statusMentionsExtracted;
|
||||
|
||||
// Reset
|
||||
Interlocked.Exchange(ref _descriptionMentionsExtracted, 0);
|
||||
Interlocked.Exchange(ref _statusMentionsExtracted, 0);
|
||||
}
|
||||
|
||||
public void ExtractedDescription(int mentionsCount)
|
||||
{
|
||||
Interlocked.Increment(ref _descriptionMentionsExtracted);
|
||||
}
|
||||
|
||||
public void ExtractedStatus(int mentionsCount)
|
||||
{
|
||||
Interlocked.Increment(ref _statusMentionsExtracted);
|
||||
}
|
||||
|
||||
public ExtractionStatistics GetStatistics()
|
||||
{
|
||||
return new ExtractionStatistics(_descriptionMentionsExtracted, _statusMentionsExtracted, _lastDescriptionMentionsExtracted, _lastStatusMentionsExtracted);
|
||||
}
|
||||
}
|
||||
|
||||
public class ExtractionStatistics
|
||||
{
|
||||
#region Ctor
|
||||
public ExtractionStatistics(int mentionsInDescriptionsExtraction, int mentionsInStatusesExtraction, int lastMentionsInDescriptionsExtraction, int lastMentionsInStatusesExtraction)
|
||||
{
|
||||
MentionsInDescriptionsExtraction = mentionsInDescriptionsExtraction;
|
||||
MentionsInStatusesExtraction = mentionsInStatusesExtraction;
|
||||
LastMentionsInDescriptionsExtraction = lastMentionsInDescriptionsExtraction;
|
||||
LastMentionsInStatusesExtraction = lastMentionsInStatusesExtraction;
|
||||
}
|
||||
#endregion
|
||||
|
||||
public int MentionsInDescriptionsExtraction { get; }
|
||||
public int MentionsInStatusesExtraction { get; }
|
||||
|
||||
public int LastMentionsInDescriptionsExtraction { get; }
|
||||
public int LastMentionsInStatusesExtraction { get; }
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user