Добавлен предсказуемый генератор данных

This commit is contained in:
Пытков Роман
2025-09-19 22:51:21 +03:00
parent 38f3880be8
commit c27e78cffe
11 changed files with 234 additions and 130 deletions

View File

@@ -12,14 +12,14 @@ public class TcpServer : IServer
{
private const uint MagicHeader = 0xDEADBEEF;
private readonly TcpListener _listener;
private readonly Func<long, Data?> _getData;
private readonly Func<Data?> _getPackage;
private readonly Func<Data, byte[]> _prepareBytes;
private readonly int _port;
private CancellationTokenSource _cts = new CancellationTokenSource();
public TcpServer(Func<long, Data?> getData, Func<Data, byte[]> prepareBytes, int port = 5555)
public TcpServer(Func<Data?> getPackage, Func<Data, byte[]> prepareBytes, int port = 5555)
{
_getData = getData;
_getPackage = getPackage;
_prepareBytes = prepareBytes;
_port = port;
_listener = new TcpListener(IPAddress.Any, _port);
@@ -63,10 +63,9 @@ public class TcpServer : IServer
using (client)
using (var stream = client.GetStream())
{
var index = 0L;
while (!token.IsCancellationRequested && client.Connected)
{
var data = _getData(index);
var data = _getPackage();
if (data != null)
{
var bytes = _prepareBytes(data);
@@ -75,7 +74,6 @@ public class TcpServer : IServer
await stream.WriteAsync(magicBytes, 0, magicBytes.Length, token);
await stream.WriteAsync(lengthBytes, 0, lengthBytes.Length, token);
await stream.WriteAsync(bytes, 0, bytes.Length, token);
index++;
}
// await Task.Delay(50, token); // Removed delay to test maximum throughput
}