mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-21 01:24:44 +01:00
add environment info
This commit is contained in:
@@ -40,12 +40,11 @@ namespace Emby.Common.Implementations.Net
|
||||
/// Creates a new UDP socket and binds it to the specified local port.
|
||||
/// </summary>
|
||||
/// <param name="localPort">An integer specifying the local port to bind the socket to.</param>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification = "The purpose of this method is to create and returns a disposable result, it is up to the caller to dispose it when they are done with it.")]
|
||||
public IUdpSocket CreateUdpSocket(int localPort)
|
||||
{
|
||||
if (localPort < 0) throw new ArgumentException("localPort cannot be less than zero.", "localPort");
|
||||
|
||||
var retVal = new Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp);
|
||||
var retVal = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
||||
try
|
||||
{
|
||||
retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
||||
@@ -65,12 +64,11 @@ namespace Emby.Common.Implementations.Net
|
||||
/// </summary>
|
||||
/// <param name="localPort">An integer specifying the local port to bind the socket to.</param>
|
||||
/// <returns>An implementation of the <see cref="IUdpSocket"/> interface used by RSSDP components to perform socket operations.</returns>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification = "The purpose of this method is to create and returns a disposable result, it is up to the caller to dispose it when they are done with it.")]
|
||||
public IUdpSocket CreateSsdpUdpSocket(int localPort)
|
||||
{
|
||||
if (localPort < 0) throw new ArgumentException("localPort cannot be less than zero.", "localPort");
|
||||
|
||||
var retVal = new Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp);
|
||||
var retVal = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
||||
try
|
||||
{
|
||||
retVal.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
||||
@@ -94,7 +92,6 @@ namespace Emby.Common.Implementations.Net
|
||||
/// <param name="multicastTimeToLive">The multicast time to live value for the socket.</param>
|
||||
/// <param name="localPort">The number of the local port to bind to.</param>
|
||||
/// <returns></returns>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "ip"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Justification = "The purpose of this method is to create and returns a disposable result, it is up to the caller to dispose it when they are done with it.")]
|
||||
public IUdpSocket CreateUdpMulticastSocket(string ipAddress, int multicastTimeToLive, int localPort)
|
||||
{
|
||||
if (ipAddress == null) throw new ArgumentNullException("ipAddress");
|
||||
|
||||
@@ -17,14 +17,14 @@ namespace Emby.Common.Implementations.Net
|
||||
|
||||
#region Fields
|
||||
|
||||
private System.Net.Sockets.Socket _Socket;
|
||||
private Socket _Socket;
|
||||
private int _LocalPort;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
public UdpSocket(System.Net.Sockets.Socket socket, int localPort, IPAddress ip)
|
||||
public UdpSocket(Socket socket, int localPort, IPAddress ip)
|
||||
{
|
||||
if (socket == null) throw new ArgumentNullException("socket");
|
||||
|
||||
@@ -46,12 +46,12 @@ namespace Emby.Common.Implementations.Net
|
||||
|
||||
var tcs = new TaskCompletionSource<SocketReceiveResult>();
|
||||
|
||||
System.Net.EndPoint receivedFromEndPoint = new IPEndPoint(IPAddress.Any, 0);
|
||||
EndPoint receivedFromEndPoint = new IPEndPoint(IPAddress.Any, 0);
|
||||
var state = new AsyncReceiveState(_Socket, receivedFromEndPoint);
|
||||
state.TaskCompletionSource = tcs;
|
||||
|
||||
#if NETSTANDARD1_6
|
||||
_Socket.ReceiveFromAsync(new System.ArraySegment<Byte>(state.Buffer), System.Net.Sockets.SocketFlags.None, state.EndPoint)
|
||||
_Socket.ReceiveFromAsync(new ArraySegment<Byte>(state.Buffer),SocketFlags.None, state.EndPoint)
|
||||
.ContinueWith((task, asyncState) =>
|
||||
{
|
||||
if (task.Status != TaskStatus.Faulted)
|
||||
@@ -62,7 +62,7 @@ namespace Emby.Common.Implementations.Net
|
||||
}
|
||||
}, state);
|
||||
#else
|
||||
_Socket.BeginReceiveFrom(state.Buffer, 0, state.Buffer.Length, System.Net.Sockets.SocketFlags.None, ref state.EndPoint, new AsyncCallback(this.ProcessResponse), state);
|
||||
_Socket.BeginReceiveFrom(state.Buffer, 0, state.Buffer.Length, SocketFlags.None, ref state.EndPoint, new AsyncCallback(this.ProcessResponse), state);
|
||||
#endif
|
||||
|
||||
return tcs.Task;
|
||||
@@ -84,7 +84,7 @@ namespace Emby.Common.Implementations.Net
|
||||
buffer = copy;
|
||||
}
|
||||
|
||||
_Socket.SendTo(buffer, new System.Net.IPEndPoint(IPAddress.Parse(endPoint.IpAddress.ToString()), endPoint.Port));
|
||||
_Socket.SendTo(buffer, new IPEndPoint(IPAddress.Parse(endPoint.IpAddress.ToString()), endPoint.Port));
|
||||
return Task.FromResult(true);
|
||||
#else
|
||||
var taskSource = new TaskCompletionSource<bool>();
|
||||
@@ -153,7 +153,6 @@ namespace Emby.Common.Implementations.Net
|
||||
|
||||
#region Private Methods
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Exceptions via task methods should be reported by task completion source, so this should be ok.")]
|
||||
private static void ProcessResponse(AsyncReceiveState state, Func<int> receiveData)
|
||||
{
|
||||
try
|
||||
@@ -206,7 +205,6 @@ namespace Emby.Common.Implementations.Net
|
||||
};
|
||||
}
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Exceptions via task methods should be reported by task completion source, so this should be ok.")]
|
||||
private void ProcessResponse(IAsyncResult asyncResult)
|
||||
{
|
||||
#if NET46
|
||||
@@ -249,7 +247,7 @@ namespace Emby.Common.Implementations.Net
|
||||
|
||||
private class AsyncReceiveState
|
||||
{
|
||||
public AsyncReceiveState(System.Net.Sockets.Socket socket, EndPoint endPoint)
|
||||
public AsyncReceiveState(Socket socket, EndPoint endPoint)
|
||||
{
|
||||
this.Socket = socket;
|
||||
this.EndPoint = endPoint;
|
||||
@@ -258,7 +256,7 @@ namespace Emby.Common.Implementations.Net
|
||||
public EndPoint EndPoint;
|
||||
public byte[] Buffer = new byte[8192];
|
||||
|
||||
public System.Net.Sockets.Socket Socket { get; private set; }
|
||||
public Socket Socket { get; private set; }
|
||||
|
||||
public TaskCompletionSource<SocketReceiveResult> TaskCompletionSource { get; set; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user