[CHANGE] Service extended and events

This commit is contained in:
max
2025-09-10 01:46:07 +02:00
parent 9ff4fcded2
commit 03631cd0c8
9 changed files with 202 additions and 26 deletions

View File

@@ -6,6 +6,7 @@ public class CircularBuffer <T>
{
private readonly T[] _buffer;
private readonly Channel<T> _channel;
private readonly object _lock = new();
public int Capacity { get; }
public int Head { get; private set; }
@@ -30,14 +31,17 @@ public class CircularBuffer <T>
public void Add(T item)
{
_buffer[Head] = item;
Head = (Head + 1) % _buffer.Length;
if (Count < _buffer.Length)
lock (_lock)
{
Count++;
_buffer[Head] = item;
Head = (Head + 1) % _buffer.Length;
if (Count < _buffer.Length)
{
Count++;
}
}
_channel.Writer.TryWrite(item);
}
@@ -47,7 +51,10 @@ public class CircularBuffer <T>
{
for (var i = 0; i < Count; i++)
{
yield return _buffer[(Head - Count + i + _buffer.Length) % _buffer.Length];
lock (_lock)
{
yield return _buffer[(Head - Count + i + _buffer.Length) % _buffer.Length];
}
}
}
}