| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | using System;using System.Net;using System.Net.Sockets;using System.Threading;using System.Threading.Tasks;using Emby.Server.Implementations.Networking;using MediaBrowser.Model.Logging;using MediaBrowser.Model.Net;namespace Emby.Server.Implementations.Net{    public class NetAcceptSocket : IAcceptSocket    {        public Socket Socket { get; private set; }        private readonly ILogger _logger;        public bool DualMode { get; private set; }        public NetAcceptSocket(Socket socket, ILogger logger, bool isDualMode)        {            if (socket == null)            {                throw new ArgumentNullException("socket");            }            if (logger == null)            {                throw new ArgumentNullException("logger");            }            Socket = socket;            _logger = logger;            DualMode = isDualMode;        }        public IpEndPointInfo LocalEndPoint        {            get            {                return NetworkManager.ToIpEndPointInfo((IPEndPoint)Socket.LocalEndPoint);            }        }        public IpEndPointInfo RemoteEndPoint        {            get            {                return NetworkManager.ToIpEndPointInfo((IPEndPoint)Socket.RemoteEndPoint);            }        }        public void Connect(IpEndPointInfo endPoint)        {            var nativeEndpoint = NetworkManager.ToIPEndPoint(endPoint);            Socket.Connect(nativeEndpoint);        }        public void Close()        {#if NET46            Socket.Close();#else            Socket.Dispose();#endif        }        public void Shutdown(bool both)        {            if (both)            {                Socket.Shutdown(SocketShutdown.Both);            }            else            {                // Change interface if ever needed                throw new NotImplementedException();            }        }        public void Listen(int backlog)        {            Socket.Listen(backlog);        }        public void Bind(IpEndPointInfo endpoint)        {            var nativeEndpoint = NetworkManager.ToIPEndPoint(endpoint);            Socket.Bind(nativeEndpoint);        }        public void Dispose()        {            Socket.Dispose();            GC.SuppressFinalize(this);        }    }}
 |