ConnectionMetadata is now ConnectionItems (#1604)

* ConnectionMetadata is now ConnectionItems
This commit is contained in:
David Fowler 2018-03-14 20:57:40 -07:00 committed by GitHub
parent 2b68db873a
commit d27844dfef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 33 additions and 31 deletions

View File

@ -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>

View File

@ -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)

View File

@ -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)

View File

@ -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)
{

View File

@ -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]})");
}
}

View File

@ -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;

View File

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

View File

@ -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)
{

View File

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

View File

@ -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();

View File

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

View File

@ -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())