Files
jmon/JMonAgent/MetricsQueue.cs
James Getrost 127b3ad5bf Initial commit: JMon cross-platform monitoring system
- gRPC client-server metrics collection
- PeriodicTimer-based 5-second sampling
- Delta encoding with configurable thresholds
- Queue/retry mechanism for resilience
- ProcessId tracking for duplicate detection
- Server-side state reconstruction
- Native AOT compilation support
- Docker/Podman containerization
- PostgreSQL + TimescaleDB persistence layer
2026-01-05 23:23:55 -06:00

33 lines
779 B
C#

using System.Collections.Concurrent;
namespace JMonAgent;
public class MetricsQueue
{
private readonly ConcurrentQueue<JMon.Protos.DeltaMetrics> _queue = new();
private readonly ILogger<MetricsQueue> _logger;
public MetricsQueue(ILogger<MetricsQueue> logger)
{
_logger = logger;
}
public void Enqueue(JMon.Protos.DeltaMetrics metrics)
{
_queue.Enqueue(metrics);
_logger.LogWarning("Metrics queued (total: {count})", _queue.Count);
}
public List<JMon.Protos.DeltaMetrics> DequeueAll()
{
var items = new List<JMon.Protos.DeltaMetrics>();
while (_queue.TryDequeue(out var item))
{
items.Add(item);
}
return items;
}
public int Count => _queue.Count;
}