2024-04-06 13:46:34 +02:00
|
|
|
using System.Net.Sockets;
|
2024-04-07 20:16:22 +02:00
|
|
|
using TanksServer.Models;
|
|
|
|
using TanksServer.Services;
|
2024-04-06 13:46:34 +02:00
|
|
|
|
2024-04-07 19:52:16 +02:00
|
|
|
namespace TanksServer.TickSteps;
|
2024-04-06 13:46:34 +02:00
|
|
|
|
2024-04-07 19:52:16 +02:00
|
|
|
internal sealed class SendToServicePointDisplay(
|
2024-04-07 20:16:22 +02:00
|
|
|
IOptions<ServicePointDisplayConfiguration> options,
|
|
|
|
LastFinishedFrameProvider lastFinishedFrameProvider
|
2024-04-07 13:02:49 +02:00
|
|
|
) : ITickStep, IDisposable
|
2024-04-06 13:46:34 +02:00
|
|
|
{
|
2024-04-07 20:16:22 +02:00
|
|
|
private readonly UdpClient? _udpClient = options.Value.Enable
|
|
|
|
? new(options.Value.Hostname, options.Value.Port)
|
|
|
|
: null;
|
2024-04-06 13:46:34 +02:00
|
|
|
|
2024-04-07 13:02:49 +02:00
|
|
|
public Task TickAsync()
|
2024-04-06 13:46:34 +02:00
|
|
|
{
|
2024-04-07 20:16:22 +02:00
|
|
|
return _udpClient?.SendAsync(lastFinishedFrameProvider.LastFrame.Data).AsTask() ?? Task.CompletedTask;
|
2024-04-07 13:02:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
{
|
2024-04-07 20:16:22 +02:00
|
|
|
_udpClient?.Dispose();
|
2024-04-06 13:46:34 +02:00
|
|
|
}
|
|
|
|
}
|