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);
- }
- }
- }
|