ConnectionMetadata is now ConnectionItems (#1604)
* ConnectionMetadata is now ConnectionItems
This commit is contained in:
parent
2b68db873a
commit
d27844dfef
|
|
@ -22,11 +22,11 @@
|
|||
<MicrosoftAspNetCoreHttpPackageVersion>2.1.0-preview2-30319</MicrosoftAspNetCoreHttpPackageVersion>
|
||||
<MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>2.1.0-preview2-30319</MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>
|
||||
<MicrosoftAspNetCoreMvcPackageVersion>2.1.0-preview2-30319</MicrosoftAspNetCoreMvcPackageVersion>
|
||||
<MicrosoftAspNetCoreProtocolsAbstractionsPackageVersion>2.1.0-a-preview2-move-transfer-format-17581</MicrosoftAspNetCoreProtocolsAbstractionsPackageVersion>
|
||||
<MicrosoftAspNetCoreProtocolsAbstractionsPackageVersion>2.1.0-a-preview2-connection-items-17583</MicrosoftAspNetCoreProtocolsAbstractionsPackageVersion>
|
||||
<MicrosoftAspNetCoreRoutingPackageVersion>2.1.0-preview2-30319</MicrosoftAspNetCoreRoutingPackageVersion>
|
||||
<MicrosoftAspNetCoreServerIISIntegrationPackageVersion>2.1.0-preview2-30319</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
|
||||
<MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>0.5.0-preview2-30319</MicrosoftAspNetCoreServerIntegrationTestingPackageVersion>
|
||||
<MicrosoftAspNetCoreServerKestrelPackageVersion>2.1.0-a-preview2-move-transfer-format-17581</MicrosoftAspNetCoreServerKestrelPackageVersion>
|
||||
<MicrosoftAspNetCoreServerKestrelPackageVersion>2.1.0-a-preview2-connection-items-17583</MicrosoftAspNetCoreServerKestrelPackageVersion>
|
||||
<MicrosoftAspNetCoreStaticFilesPackageVersion>2.1.0-preview2-30319</MicrosoftAspNetCoreStaticFilesPackageVersion>
|
||||
<MicrosoftAspNetCoreTestHostPackageVersion>2.1.0-preview2-30319</MicrosoftAspNetCoreTestHostPackageVersion>
|
||||
<MicrosoftAspNetCoreTestingPackageVersion>2.1.0-preview2-30319</MicrosoftAspNetCoreTestingPackageVersion>
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ namespace FunctionalTests
|
|||
|
||||
public string GetActiveTransportName()
|
||||
{
|
||||
return Context.Connection.Metadata[ConnectionMetadataNames.Transport].ToString();
|
||||
return Context.Connection.Items[ConnectionMetadataNames.Transport].ToString();
|
||||
}
|
||||
|
||||
public ComplexObject EchoComplexObject(ComplexObject complexObject)
|
||||
|
|
|
|||
|
|
@ -23,9 +23,9 @@ namespace SocialWeather
|
|||
|
||||
public void OnConnectedAsync(ConnectionContext connection)
|
||||
{
|
||||
connection.Features.Get<IConnectionMetadataFeature>().Metadata["groups"] = new HashSet<string>();
|
||||
connection.Items["groups"] = new HashSet<string>();
|
||||
var format = connection.GetHttpContext().Request.Query["formatType"].ToString();
|
||||
connection.Features.Get<IConnectionMetadataFeature>().Metadata["format"] = format;
|
||||
connection.Items["format"] = format;
|
||||
if (string.Equals(format, "protobuf", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
var transferFormatFeature = connection.Features.Get<ITransferFormatFeature>();
|
||||
|
|
@ -47,7 +47,7 @@ namespace SocialWeather
|
|||
foreach (var connection in _connectionList)
|
||||
{
|
||||
var context = connection.GetHttpContext();
|
||||
var formatter = _formatterResolver.GetFormatter<T>((string)connection.Features.Get<IConnectionMetadataFeature>().Metadata["format"]);
|
||||
var formatter = _formatterResolver.GetFormatter<T>((string)connection.Items["format"]);
|
||||
var ms = new MemoryStream();
|
||||
await formatter.WriteAsync(data, ms);
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ namespace SocialWeather
|
|||
|
||||
public void AddGroupAsync(ConnectionContext connection, string groupName)
|
||||
{
|
||||
var groups = (HashSet<string>)connection.Features.Get<IConnectionMetadataFeature>().Metadata["groups"];
|
||||
var groups = (HashSet<string>)connection.Items["groups"];
|
||||
lock (groups)
|
||||
{
|
||||
groups.Add(groupName);
|
||||
|
|
@ -81,7 +81,7 @@ namespace SocialWeather
|
|||
|
||||
public void RemoveGroupAsync(ConnectionContext connection, string groupName)
|
||||
{
|
||||
var groups = (HashSet<string>)connection.Features.Get<IConnectionMetadataFeature>().Metadata["groups"];
|
||||
var groups = (HashSet<string>)connection.Items["groups"];
|
||||
if (groups != null)
|
||||
{
|
||||
lock (groups)
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ namespace SocialWeather
|
|||
public async Task ProcessRequests(ConnectionContext connection)
|
||||
{
|
||||
var formatter = _formatterResolver.GetFormatter<WeatherReport>(
|
||||
(string)connection.Features.Get<IConnectionMetadataFeature>().Metadata["format"]);
|
||||
(string)connection.Items["format"]);
|
||||
|
||||
while (true)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ namespace SocketsSample.EndPoints
|
|||
{
|
||||
Connections.Add(connection);
|
||||
|
||||
await Broadcast($"{connection.ConnectionId} connected ({connection.Features.Get<IConnectionMetadataFeature>().Metadata[ConnectionMetadataNames.Transport]})");
|
||||
await Broadcast($"{connection.ConnectionId} connected ({connection.Items[ConnectionMetadataNames.Transport]})");
|
||||
|
||||
try
|
||||
{
|
||||
|
|
@ -52,7 +52,7 @@ namespace SocketsSample.EndPoints
|
|||
{
|
||||
Connections.Remove(connection);
|
||||
|
||||
await Broadcast($"{connection.ConnectionId} disconnected ({connection.Features.Get<IConnectionMetadataFeature>().Metadata[ConnectionMetadataNames.Transport]})");
|
||||
await Broadcast($"{connection.ConnectionId} disconnected ({connection.Items[ConnectionMetadataNames.Transport]})");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.SignalR
|
|||
|
||||
public virtual IFeatureCollection Features => _connectionContext.Features;
|
||||
|
||||
public virtual IDictionary<object, object> Metadata => Features.Get<IConnectionMetadataFeature>().Metadata;
|
||||
public virtual IDictionary<object, object> Items => _connectionContext.Items;
|
||||
|
||||
public virtual PipeReader Input => _connectionContext.Transport.Input;
|
||||
|
||||
|
|
|
|||
|
|
@ -15,8 +15,9 @@ namespace Microsoft.AspNetCore.Sockets
|
|||
{
|
||||
public class DefaultConnectionContext : ConnectionContext,
|
||||
IConnectionIdFeature,
|
||||
IConnectionMetadataFeature,
|
||||
IConnectionItemsFeature,
|
||||
IConnectionTransportFeature,
|
||||
IApplicationTransportFeature,
|
||||
IConnectionUserFeature,
|
||||
IConnectionHeartbeatFeature,
|
||||
ITransferFormatFeature
|
||||
|
|
@ -41,9 +42,10 @@ namespace Microsoft.AspNetCore.Sockets
|
|||
// PERF: This type could just implement IFeatureCollection
|
||||
Features = new FeatureCollection();
|
||||
Features.Set<IConnectionUserFeature>(this);
|
||||
Features.Set<IConnectionMetadataFeature>(this);
|
||||
Features.Set<IConnectionItemsFeature>(this);
|
||||
Features.Set<IConnectionIdFeature>(this);
|
||||
Features.Set<IConnectionTransportFeature>(this);
|
||||
Features.Set<IApplicationTransportFeature>(this);
|
||||
Features.Set<IConnectionHeartbeatFeature>(this);
|
||||
Features.Set<ITransferFormatFeature>(this);
|
||||
}
|
||||
|
|
@ -66,9 +68,9 @@ namespace Microsoft.AspNetCore.Sockets
|
|||
|
||||
public ClaimsPrincipal User { get; set; }
|
||||
|
||||
public IDictionary<object, object> Metadata { get; set; } = new ConnectionMetadata();
|
||||
public override IDictionary<object, object> Items { get; set; } = new ConnectionMetadata();
|
||||
|
||||
public IDuplexPipe Application { get; }
|
||||
public IDuplexPipe Application { get; set; }
|
||||
|
||||
public override IDuplexPipe Transport { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ namespace Microsoft.AspNetCore.Sockets
|
|||
{
|
||||
Log.EstablishedConnection(_logger);
|
||||
|
||||
connection.Metadata[ConnectionMetadataNames.Transport] = TransportType.LongPolling;
|
||||
connection.Items[ConnectionMetadataNames.Transport] = TransportType.LongPolling;
|
||||
|
||||
connection.ApplicationTask = ExecuteApplication(ConnectionDelegate, connection);
|
||||
}
|
||||
|
|
@ -344,8 +344,8 @@ namespace Microsoft.AspNetCore.Sockets
|
|||
{
|
||||
// Verify some initialization invariants
|
||||
// We want to be positive that the IConnectionInherentKeepAliveFeature is initialized before invoking the application, if the long polling transport is in use.
|
||||
Debug.Assert(connection.Features.Get<IConnectionMetadataFeature>().Metadata[ConnectionMetadataNames.Transport] != null, "Transport has not been initialized yet");
|
||||
Debug.Assert((TransportType?)connection.Features.Get<IConnectionMetadataFeature>().Metadata[ConnectionMetadataNames.Transport] != TransportType.LongPolling ||
|
||||
Debug.Assert(connection.Items[ConnectionMetadataNames.Transport] != null, "Transport has not been initialized yet");
|
||||
Debug.Assert((TransportType?)connection.Items[ConnectionMetadataNames.Transport] != TransportType.LongPolling ||
|
||||
connection.Features.Get<IConnectionInherentKeepAliveFeature>() != null, "Long-polling transport is in use but IConnectionInherentKeepAliveFeature as not configured");
|
||||
|
||||
// Jump onto the thread pool thread so blocking user code doesn't block the setup of the
|
||||
|
|
@ -440,7 +440,7 @@ namespace Microsoft.AspNetCore.Sockets
|
|||
|
||||
context.Response.ContentType = "text/plain";
|
||||
|
||||
var transport = (TransportType?)connection.Metadata[ConnectionMetadataNames.Transport];
|
||||
var transport = (TransportType?)connection.Items[ConnectionMetadataNames.Transport];
|
||||
if (transport == TransportType.WebSockets)
|
||||
{
|
||||
Log.PostNotAllowedForWebSockets(_logger);
|
||||
|
|
@ -473,11 +473,11 @@ namespace Microsoft.AspNetCore.Sockets
|
|||
// Set the IHttpConnectionFeature now that we can access it.
|
||||
connection.Features.Set(context.Features.Get<IHttpConnectionFeature>());
|
||||
|
||||
var transport = (TransportType?)connection.Metadata[ConnectionMetadataNames.Transport];
|
||||
var transport = (TransportType?)connection.Items[ConnectionMetadataNames.Transport];
|
||||
|
||||
if (transport == null)
|
||||
{
|
||||
connection.Metadata[ConnectionMetadataNames.Transport] = transportType;
|
||||
connection.Items[ConnectionMetadataNames.Transport] = transportType;
|
||||
}
|
||||
else if (transport != transportType)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests
|
|||
|
||||
public string GetActiveTransportName()
|
||||
{
|
||||
return Context.Connection.Metadata[ConnectionMetadataNames.Transport].ToString();
|
||||
return Context.Connection.Items[ConnectionMetadataNames.Transport].ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
private Queue<HubMessage> _messages = new Queue<HubMessage>();
|
||||
|
||||
public DefaultConnectionContext Connection { get; }
|
||||
public Task Connected => ((TaskCompletionSource<bool>)Connection.Metadata["ConnectedTask"]).Task;
|
||||
public Task Connected => ((TaskCompletionSource<bool>)Connection.Items["ConnectedTask"]).Task;
|
||||
|
||||
public TestClient(bool synchronousCallbacks = false, IHubProtocol protocol = null, IInvocationBinder invocationBinder = null, bool addClaimId = false)
|
||||
{
|
||||
|
|
@ -40,7 +40,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
}
|
||||
|
||||
Connection.User = new ClaimsPrincipal(new ClaimsIdentity(claims));
|
||||
Connection.Metadata["ConnectedTask"] = new TaskCompletionSource<bool>();
|
||||
Connection.Items["ConnectedTask"] = new TaskCompletionSource<bool>();
|
||||
|
||||
_protocol = protocol ?? new JsonHubProtocol();
|
||||
_invocationBinder = invocationBinder ?? new DefaultInvocationBinder();
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests.HubEndpointTestUtils
|
|||
{
|
||||
public override Task OnConnectedAsync()
|
||||
{
|
||||
var tcs = (TaskCompletionSource<bool>)Context.Connection.Metadata["ConnectedTask"];
|
||||
var tcs = (TaskCompletionSource<bool>)Context.Connection.Items["ConnectedTask"];
|
||||
tcs?.TrySetResult(true);
|
||||
return base.OnConnectedAsync();
|
||||
}
|
||||
|
|
@ -172,7 +172,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests.HubEndpointTestUtils
|
|||
{
|
||||
public override Task OnConnectedAsync()
|
||||
{
|
||||
var tcs = (TaskCompletionSource<bool>)Context.Connection.Metadata["ConnectedTask"];
|
||||
var tcs = (TaskCompletionSource<bool>)Context.Connection.Items["ConnectedTask"];
|
||||
tcs?.TrySetResult(true);
|
||||
return base.OnConnectedAsync();
|
||||
}
|
||||
|
|
@ -252,7 +252,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests.HubEndpointTestUtils
|
|||
{
|
||||
public override Task OnConnectedAsync()
|
||||
{
|
||||
var tcs = (TaskCompletionSource<bool>)Context.Connection.Metadata["ConnectedTask"];
|
||||
var tcs = (TaskCompletionSource<bool>)Context.Connection.Items["ConnectedTask"];
|
||||
tcs?.TrySetResult(true);
|
||||
return base.OnConnectedAsync();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
|
|||
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
|
||||
var pipeOptions = new PipeOptions(pauseWriterThreshold: 8, resumeWriterThreshold: 4);
|
||||
var connection = manager.CreateConnection(pipeOptions, pipeOptions);
|
||||
connection.Metadata[ConnectionMetadataNames.Transport] = transportType;
|
||||
connection.Items[ConnectionMetadataNames.Transport] = transportType;
|
||||
|
||||
using (var requestBody = new MemoryStream())
|
||||
using (var responseBody = new MemoryStream())
|
||||
|
|
@ -258,7 +258,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
|
|||
var manager = CreateConnectionManager(loggerFactory);
|
||||
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
|
||||
var connection = manager.CreateConnection();
|
||||
connection.Metadata[ConnectionMetadataNames.Transport] = TransportType.WebSockets;
|
||||
connection.Items[ConnectionMetadataNames.Transport] = TransportType.WebSockets;
|
||||
|
||||
using (var strm = new MemoryStream())
|
||||
{
|
||||
|
|
@ -297,7 +297,7 @@ namespace Microsoft.AspNetCore.Sockets.Tests
|
|||
var manager = CreateConnectionManager(loggerFactory);
|
||||
var dispatcher = new HttpConnectionDispatcher(manager, loggerFactory);
|
||||
var connection = manager.CreateConnection();
|
||||
connection.Metadata[ConnectionMetadataNames.Transport] = transportType;
|
||||
connection.Items[ConnectionMetadataNames.Transport] = transportType;
|
||||
|
||||
using (var requestBody = new MemoryStream())
|
||||
using (var responseBody = new MemoryStream())
|
||||
|
|
|
|||
Loading…
Reference in New Issue