using System.Threading; using System.Threading.Tasks; using Emby.Server.Implementations.Udp; using MediaBrowser.Controller; using MediaBrowser.Controller.Plugins; using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.EntryPoints { /// /// Class UdpServerEntryPoint. /// public sealed class UdpServerEntryPoint : IServerEntryPoint { /// /// The port of the UDP server. /// public const int PortNumber = 7359; /// /// The logger. /// private readonly ILogger _logger; private readonly IServerApplicationHost _appHost; /// /// The UDP server. /// private UdpServer _udpServer; private CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); private bool _disposed = false; /// /// Initializes a new instance of the class. /// public UdpServerEntryPoint( ILogger logger, IServerApplicationHost appHost) { _logger = logger; _appHost = appHost; } /// public Task RunAsync() { _udpServer = new UdpServer(_logger, _appHost); _udpServer.Start(PortNumber, _cancellationTokenSource.Token); return Task.CompletedTask; } /// public void Dispose() { if (_disposed) { return; } _cancellationTokenSource.Cancel(); _udpServer.Dispose(); _cancellationTokenSource.Dispose(); _cancellationTokenSource = null; _udpServer = null; _disposed = true; } } }