| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 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{    /// <summary>    /// Class UdpServerEntryPoint    /// </summary>    public class UdpServerEntryPoint : IServerEntryPoint    {        /// <summary>        /// Gets or sets the UDP server.        /// </summary>        /// <value>The UDP server.</value>        private UdpServer UdpServer { get; set; }        /// <summary>        /// The _logger        /// </summary>        private readonly ILogger _logger;        private readonly ISocketFactory _socketFactory;        private readonly IServerApplicationHost _appHost;        private readonly IJsonSerializer _json;        public const int PortNumber = 7359;        /// <summary>        /// Initializes a new instance of the <see cref="UdpServerEntryPoint" /> class.        /// </summary>        public UdpServerEntryPoint(ILogger logger, IServerApplicationHost appHost, IJsonSerializer json, ISocketFactory socketFactory)        {            _logger = logger;            _appHost = appHost;            _json = json;            _socketFactory = socketFactory;        }        /// <summary>        /// Runs this instance.        /// </summary>        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;        }        /// <summary>        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.        /// </summary>        public void Dispose()        {            Dispose(true);        }        /// <summary>        /// Releases unmanaged and - optionally - managed resources.        /// </summary>        /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>        protected virtual void Dispose(bool dispose)        {            if (dispose)            {                if (UdpServer != null)                {                    UdpServer.Dispose();                }            }        }    }}
 |