using System; using System.Threading.Tasks; using Emby.Server.Implementations.Udp; using MediaBrowser.Controller; using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Net; using MediaBrowser.Model.Serialization; using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.EntryPoints { /// /// Class UdpServerEntryPoint. /// public class UdpServerEntryPoint : IServerEntryPoint { /// /// The port of the UDP server. /// public const int PortNumber = 7359; /// /// The logger. /// private readonly ILogger _logger; private readonly ISocketFactory _socketFactory; private readonly IServerApplicationHost _appHost; private readonly IJsonSerializer _json; /// /// The UDP server. /// private UdpServer _udpServer; /// /// Initializes a new instance of the class. /// public UdpServerEntryPoint( ILogger logger, IServerApplicationHost appHost, IJsonSerializer json, ISocketFactory socketFactory) { _logger = logger; _appHost = appHost; _json = json; _socketFactory = socketFactory; } /// public Task RunAsync() { var udpServer = new UdpServer(_logger, _appHost, _json, _socketFactory); try { udpServer.Start(PortNumber); _udpServer = udpServer; } catch (Exception ex) { _logger.LogError(ex, "Failed to start UDP Server"); } return Task.CompletedTask; } /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } /// /// Releases unmanaged and - optionally - managed resources. /// /// true to release both managed and unmanaged resources; false to release only unmanaged resources. protected virtual void Dispose(bool dispose) { if (dispose) { if (_udpServer != null) { _udpServer.Dispose(); } } } } }