Iceshrimp.NET/Iceshrimp.Frontend/Core/Miscellaneous/LogBuffer.cs

33 lines
No EOL
725 B
C#

namespace Iceshrimp.Frontend.Core.Miscellaneous;
public class LogBuffer
{
private readonly Queue<string> _buffer = new();
private int _usedCapacity;
private readonly int _maxCapacity;
public LogBuffer(int capacity)
{
_maxCapacity = capacity;
}
public void Add(string input)
{
if (input.Length > _maxCapacity)
throw new
ArgumentException($"Log message size ({input.Length}) exceeds total buffer capacity of {_maxCapacity}");
while (_usedCapacity + input.Length > _maxCapacity)
{
var x = _buffer.Dequeue();
_usedCapacity -= x.Length;
}
_buffer.Enqueue(input);
_usedCapacity += input.Length;
}
public List<string> AsList()
{
return _buffer.ToList();
}
}