mirror of
https://github.com/Sonarr/Sonarr.git
synced 2026-04-22 22:16:13 -04:00
Upgraded SignalR to 1.2.2
This commit is contained in:
@@ -162,7 +162,7 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Exceptions are flowed to the caller.")]
|
||||
private Task ProcessReceiveRequest(ITransportConnection connection)
|
||||
protected Task ProcessReceiveRequest(ITransportConnection connection)
|
||||
{
|
||||
Func<Task> initialize = null;
|
||||
|
||||
@@ -273,7 +273,7 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
{
|
||||
var context = (MessageContext)state;
|
||||
|
||||
response.TimedOut = context.Transport.IsTimedOut;
|
||||
response.Reconnect = context.Transport.HostShutdownToken.IsCancellationRequested;
|
||||
|
||||
// If we're telling the client to disconnect then clean up the instantiated connection.
|
||||
if (response.Disconnect)
|
||||
@@ -282,7 +282,7 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
return context.Transport.Send(response).Then(c => OnDisconnectMessage(c), context)
|
||||
.Then(() => TaskAsyncHelper.False);
|
||||
}
|
||||
else if (response.TimedOut || response.Aborted)
|
||||
else if (context.Transport.IsTimedOut || response.Aborted)
|
||||
{
|
||||
context.Registration.Dispose();
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNet.SignalR.Hosting;
|
||||
using Microsoft.AspNet.SignalR.Infrastructure;
|
||||
@@ -252,7 +253,7 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
{
|
||||
var context = (MessageContext)state;
|
||||
|
||||
response.TimedOut = context.Transport.IsTimedOut;
|
||||
response.Reconnect = context.Transport.HostShutdownToken.IsCancellationRequested;
|
||||
|
||||
Task task = TaskAsyncHelper.Empty;
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
private readonly Action<TextWriter> _writeCursor;
|
||||
|
||||
public PersistentResponse()
|
||||
: this(message => true, writer => { })
|
||||
: this(message => false, writer => { })
|
||||
{
|
||||
|
||||
}
|
||||
@@ -61,9 +61,10 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
public bool Aborted { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// True if the connection timed out.
|
||||
/// True if the client should try reconnecting.
|
||||
/// </summary>
|
||||
public bool TimedOut { get; set; }
|
||||
// This is set when the host is shutting down.
|
||||
public bool Reconnect { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Signed token representing the list of groups. Updates on change.
|
||||
@@ -106,7 +107,7 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
jsonWriter.WriteValue(1);
|
||||
}
|
||||
|
||||
if (TimedOut)
|
||||
if (Reconnect)
|
||||
{
|
||||
jsonWriter.WritePropertyName("T");
|
||||
jsonWriter.WriteValue(1);
|
||||
|
||||
@@ -130,6 +130,14 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
}
|
||||
}
|
||||
|
||||
protected CancellationToken HostShutdownToken
|
||||
{
|
||||
get
|
||||
{
|
||||
return _hostShutdownToken;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsTimedOut
|
||||
{
|
||||
get
|
||||
@@ -186,7 +194,7 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
|
||||
protected virtual TextWriter CreateResponseWriter()
|
||||
{
|
||||
return new BufferTextWriter(Context.Response);
|
||||
return new BinaryTextWriter(Context.Response);
|
||||
}
|
||||
|
||||
protected void IncrementErrors()
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
private bool _isAlive = true;
|
||||
|
||||
private readonly Action<string> _message;
|
||||
private readonly Action<bool> _closed;
|
||||
private readonly Action _closed;
|
||||
private readonly Action<Exception> _error;
|
||||
|
||||
public WebSocketTransport(HostContext context,
|
||||
@@ -74,28 +74,39 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
|
||||
public override Task ProcessRequest(ITransportConnection connection)
|
||||
{
|
||||
var webSocketRequest = _context.Request as IWebSocketRequest;
|
||||
|
||||
// Throw if the server implementation doesn't support websockets
|
||||
if (webSocketRequest == null)
|
||||
if (IsAbortRequest)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.Error_WebSocketsNotSupported);
|
||||
return connection.Abort(ConnectionId);
|
||||
}
|
||||
|
||||
return webSocketRequest.AcceptWebSocketRequest(socket =>
|
||||
else
|
||||
{
|
||||
_socket = socket;
|
||||
socket.OnClose = _closed;
|
||||
socket.OnMessage = _message;
|
||||
socket.OnError = _error;
|
||||
var webSocketRequest = _context.Request as IWebSocketRequest;
|
||||
|
||||
return ProcessRequestCore(connection);
|
||||
});
|
||||
// Throw if the server implementation doesn't support websockets
|
||||
if (webSocketRequest == null)
|
||||
{
|
||||
throw new InvalidOperationException(Resources.Error_WebSocketsNotSupported);
|
||||
}
|
||||
|
||||
Connection = connection;
|
||||
InitializePersistentState();
|
||||
|
||||
return webSocketRequest.AcceptWebSocketRequest(socket =>
|
||||
{
|
||||
_socket = socket;
|
||||
socket.OnClose = _closed;
|
||||
socket.OnMessage = _message;
|
||||
socket.OnError = _error;
|
||||
|
||||
return ProcessReceiveRequest(connection);
|
||||
},
|
||||
InitializeTcs.Task);
|
||||
}
|
||||
}
|
||||
|
||||
protected override TextWriter CreateResponseWriter()
|
||||
{
|
||||
return new BufferTextWriter(_socket);
|
||||
return new BinaryTextWriter(_socket);
|
||||
}
|
||||
|
||||
public override Task Send(object value)
|
||||
@@ -113,6 +124,11 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
return Send((object)response);
|
||||
}
|
||||
|
||||
protected internal override Task InitializeResponse(ITransportConnection connection)
|
||||
{
|
||||
return _socket.Send("{}");
|
||||
}
|
||||
|
||||
private static Task PerformSend(object state)
|
||||
{
|
||||
var context = (WebSocketTransportContext)state;
|
||||
@@ -131,18 +147,11 @@ namespace Microsoft.AspNet.SignalR.Transports
|
||||
}
|
||||
}
|
||||
|
||||
private void OnClosed(bool clean)
|
||||
private void OnClosed()
|
||||
{
|
||||
Trace.TraceInformation("CloseSocket({0}, {1})", clean, ConnectionId);
|
||||
|
||||
// If we performed a clean disconnect then we go through the normal disconnect routine. However,
|
||||
// If we performed an unclean disconnect we want to mark the connection as "not alive" and let the
|
||||
// HeartBeat clean it up. This is to maintain consistency across the transports.
|
||||
if (clean)
|
||||
{
|
||||
Abort();
|
||||
}
|
||||
Trace.TraceInformation("CloseSocket({0})", ConnectionId);
|
||||
|
||||
// Require a request to /abort to stop tracking the connection. #2195
|
||||
_isAlive = false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user