Update corefx dependencies and react to changes in JSON API (#9563)

This commit is contained in:
Nate McMaster 2019-04-19 11:42:41 -07:00 committed by GitHub
parent 5ff2910d09
commit 9212f4a3df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 145 additions and 138 deletions

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by automation to update Versions.props and may be used for other purposes, such as
@ -285,96 +285,96 @@
<Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>358e5fd9eb213b60f94c01aaacf27d2297aa4f30</Sha>
</Dependency>
<Dependency Name="Microsoft.Bcl.Json.Sources" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="Microsoft.Bcl.Json.Sources" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="Microsoft.CSharp" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="Microsoft.CSharp" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="Microsoft.Win32.Registry" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="Microsoft.Win32.Registry" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.ComponentModel.Annotations" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.ComponentModel.Annotations" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Data.SqlClient" Version="4.7.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Data.SqlClient" Version="4.7.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Diagnostics.EventLog" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Diagnostics.EventLog" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.IO.Pipelines" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.IO.Pipelines" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Net.Http.WinHttpHandler" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Net.Http.WinHttpHandler" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Reflection.Metadata" Version="1.7.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Reflection.Metadata" Version="1.7.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Security.Cryptography.Cng" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Security.Cryptography.Cng" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Security.Cryptography.Pkcs" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Security.Cryptography.Pkcs" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Security.Cryptography.Xml" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Security.Cryptography.Xml" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Security.Permissions" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Security.Permissions" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Security.Principal.Windows" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Security.Principal.Windows" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.ServiceProcess.ServiceController" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.ServiceProcess.ServiceController" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Text.Encodings.Web" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Text.Encodings.Web" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="System.Threading.Channels" Version="4.6.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="System.Threading.Channels" Version="4.6.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="3.0.0-preview5-27618-01" CoherentParentDependency="Microsoft.Extensions.Logging">
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="3.0.0-preview5-27619-03" CoherentParentDependency="Microsoft.Extensions.Logging">
<Uri>https://github.com/dotnet/core-setup</Uri>
<Sha>0ed64989889a5a371a81c926cb87d0abea9f1763</Sha>
<Sha>de216246a046668d10279f7e113a2b9384660652</Sha>
</Dependency>
<Dependency Name="Microsoft.NETCore.App" Version="3.0.0-preview5-27618-01" CoherentParentDependency="Microsoft.Extensions.Logging">
<Dependency Name="Microsoft.NETCore.App" Version="3.0.0-preview5-27619-03" CoherentParentDependency="Microsoft.Extensions.Logging">
<Uri>https://github.com/dotnet/core-setup</Uri>
<Sha>0ed64989889a5a371a81c926cb87d0abea9f1763</Sha>
<Sha>de216246a046668d10279f7e113a2b9384660652</Sha>
</Dependency>
</ProductDependencies>
<ToolsetDependencies>
<!-- Listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
<Dependency Name="Microsoft.NETCore.Platforms" Version="3.0.0-preview5.19217.11" CoherentParentDependency="Microsoft.NETCore.App">
<Dependency Name="Microsoft.NETCore.Platforms" Version="3.0.0-preview5.19218.11" CoherentParentDependency="Microsoft.NETCore.App">
<Uri>https://github.com/dotnet/corefx</Uri>
<Sha>315fd00cb2465390900209919cdb2bf6bc44ae0e</Sha>
<Sha>0a9a366e290aded3e9bf5d082d6beee5ff560177</Sha>
</Dependency>
<Dependency Name="Internal.AspNetCore.Analyzers" Version="3.0.0-preview5.19218.3" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri>

View File

@ -1,4 +1,4 @@
<!--
<!--
This file defines the versions of external dependencies used by ASP.NET Core.
This file might be updated by automation.
@ -19,30 +19,30 @@
<!-- Packages from dotnet/arcade -->
<MicrosoftDotNetGenAPIPackageVersion>1.0.0-beta.19218.1</MicrosoftDotNetGenAPIPackageVersion>
<!-- Packages from dotnet/core-setup -->
<MicrosoftExtensionsDependencyModelPackageVersion>3.0.0-preview5-27618-01</MicrosoftExtensionsDependencyModelPackageVersion>
<MicrosoftNETCoreAppPackageVersion>3.0.0-preview5-27618-01</MicrosoftNETCoreAppPackageVersion>
<MicrosoftExtensionsDependencyModelPackageVersion>3.0.0-preview5-27619-03</MicrosoftExtensionsDependencyModelPackageVersion>
<MicrosoftNETCoreAppPackageVersion>3.0.0-preview5-27619-03</MicrosoftNETCoreAppPackageVersion>
<!-- Packages from dotnet/corefx -->
<MicrosoftBclJsonSourcesPackageVersion>4.6.0-preview5.19217.11</MicrosoftBclJsonSourcesPackageVersion>
<MicrosoftCSharpPackageVersion>4.6.0-preview5.19217.11</MicrosoftCSharpPackageVersion>
<MicrosoftWin32RegistryPackageVersion>4.6.0-preview5.19217.11</MicrosoftWin32RegistryPackageVersion>
<SystemComponentModelAnnotationsPackageVersion>4.6.0-preview5.19217.11</SystemComponentModelAnnotationsPackageVersion>
<SystemDataSqlClientPackageVersion>4.7.0-preview5.19217.11</SystemDataSqlClientPackageVersion>
<SystemDiagnosticsEventLogPackageVersion>4.6.0-preview5.19217.11</SystemDiagnosticsEventLogPackageVersion>
<SystemIOPipelinesPackageVersion>4.6.0-preview5.19217.11</SystemIOPipelinesPackageVersion>
<SystemNetHttpWinHttpHandlerPackageVersion>4.6.0-preview5.19217.11</SystemNetHttpWinHttpHandlerPackageVersion>
<SystemNetWebSocketsWebSocketProtocolPackageVersion>4.6.0-preview5.19217.11</SystemNetWebSocketsWebSocketProtocolPackageVersion>
<SystemReflectionMetadataPackageVersion>1.7.0-preview5.19217.11</SystemReflectionMetadataPackageVersion>
<SystemRuntimeCompilerServicesUnsafePackageVersion>4.6.0-preview5.19217.11</SystemRuntimeCompilerServicesUnsafePackageVersion>
<SystemSecurityCryptographyCngPackageVersion>4.6.0-preview5.19217.11</SystemSecurityCryptographyCngPackageVersion>
<SystemSecurityCryptographyPkcsPackageVersion>4.6.0-preview5.19217.11</SystemSecurityCryptographyPkcsPackageVersion>
<SystemSecurityCryptographyXmlPackageVersion>4.6.0-preview5.19217.11</SystemSecurityCryptographyXmlPackageVersion>
<SystemSecurityPermissionsPackageVersion>4.6.0-preview5.19217.11</SystemSecurityPermissionsPackageVersion>
<SystemSecurityPrincipalWindowsPackageVersion>4.6.0-preview5.19217.11</SystemSecurityPrincipalWindowsPackageVersion>
<SystemServiceProcessServiceControllerPackageVersion>4.6.0-preview5.19217.11</SystemServiceProcessServiceControllerPackageVersion>
<SystemTextEncodingsWebPackageVersion>4.6.0-preview5.19217.11</SystemTextEncodingsWebPackageVersion>
<SystemThreadingChannelsPackageVersion>4.6.0-preview5.19217.11</SystemThreadingChannelsPackageVersion>
<MicrosoftBclJsonSourcesPackageVersion>4.6.0-preview5.19218.11</MicrosoftBclJsonSourcesPackageVersion>
<MicrosoftCSharpPackageVersion>4.6.0-preview5.19218.11</MicrosoftCSharpPackageVersion>
<MicrosoftWin32RegistryPackageVersion>4.6.0-preview5.19218.11</MicrosoftWin32RegistryPackageVersion>
<SystemComponentModelAnnotationsPackageVersion>4.6.0-preview5.19218.11</SystemComponentModelAnnotationsPackageVersion>
<SystemDataSqlClientPackageVersion>4.7.0-preview5.19218.11</SystemDataSqlClientPackageVersion>
<SystemDiagnosticsEventLogPackageVersion>4.6.0-preview5.19218.11</SystemDiagnosticsEventLogPackageVersion>
<SystemIOPipelinesPackageVersion>4.6.0-preview5.19218.11</SystemIOPipelinesPackageVersion>
<SystemNetHttpWinHttpHandlerPackageVersion>4.6.0-preview5.19218.11</SystemNetHttpWinHttpHandlerPackageVersion>
<SystemNetWebSocketsWebSocketProtocolPackageVersion>4.6.0-preview5.19218.11</SystemNetWebSocketsWebSocketProtocolPackageVersion>
<SystemReflectionMetadataPackageVersion>1.7.0-preview5.19218.11</SystemReflectionMetadataPackageVersion>
<SystemRuntimeCompilerServicesUnsafePackageVersion>4.6.0-preview5.19218.11</SystemRuntimeCompilerServicesUnsafePackageVersion>
<SystemSecurityCryptographyCngPackageVersion>4.6.0-preview5.19218.11</SystemSecurityCryptographyCngPackageVersion>
<SystemSecurityCryptographyPkcsPackageVersion>4.6.0-preview5.19218.11</SystemSecurityCryptographyPkcsPackageVersion>
<SystemSecurityCryptographyXmlPackageVersion>4.6.0-preview5.19218.11</SystemSecurityCryptographyXmlPackageVersion>
<SystemSecurityPermissionsPackageVersion>4.6.0-preview5.19218.11</SystemSecurityPermissionsPackageVersion>
<SystemSecurityPrincipalWindowsPackageVersion>4.6.0-preview5.19218.11</SystemSecurityPrincipalWindowsPackageVersion>
<SystemServiceProcessServiceControllerPackageVersion>4.6.0-preview5.19218.11</SystemServiceProcessServiceControllerPackageVersion>
<SystemTextEncodingsWebPackageVersion>4.6.0-preview5.19218.11</SystemTextEncodingsWebPackageVersion>
<SystemThreadingChannelsPackageVersion>4.6.0-preview5.19218.11</SystemThreadingChannelsPackageVersion>
<!-- Only listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
<MicrosoftNETCorePlatformsPackageVersion>3.0.0-preview5.19217.11</MicrosoftNETCorePlatformsPackageVersion>
<MicrosoftNETCorePlatformsPackageVersion>3.0.0-preview5.19218.11</MicrosoftNETCorePlatformsPackageVersion>
<!-- Packages from aspnet/Extensions -->
<InternalAspNetCoreAnalyzersPackageVersion>3.0.0-preview5.19218.3</InternalAspNetCoreAnalyzersPackageVersion>
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>3.0.0-preview5.19218.3</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>

View File

@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures.Infrastructure
using (var bufferWriter = new ArrayBufferWriter<byte>())
{
var writer = new Utf8JsonWriter(bufferWriter);
using var writer = new Utf8JsonWriter(bufferWriter);
writer.WriteStartObject();
foreach (var (key, value) in values)
{

View File

@ -103,7 +103,7 @@ namespace JwtBearerSample
private void Serialize(IList<Todo> todos, IBufferWriter<byte> output)
{
var writer = new Utf8JsonWriter(output);
using var writer = new Utf8JsonWriter(output);
writer.WriteStartArray();
foreach (var todo in todos)
{

View File

@ -4,6 +4,7 @@
using System;
using System.Buffers;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Text.Json;
@ -35,25 +36,25 @@ namespace Microsoft.AspNetCore.Http.Connections
public static void WriteResponse(NegotiationResponse response, IBufferWriter<byte> output)
{
var writer = new Utf8JsonWriter(output, new JsonWriterState(new JsonWriterOptions() { SkipValidation = true }));
using var writer = new Utf8JsonWriter(output, new JsonWriterOptions() { SkipValidation = true });
writer.WriteStartObject();
if (!string.IsNullOrEmpty(response.Url))
{
writer.WriteString(UrlPropertyNameBytes, response.Url, escape: false);
writer.WriteString(UrlPropertyNameBytes, response.Url);
}
if (!string.IsNullOrEmpty(response.AccessToken))
{
writer.WriteString(AccessTokenPropertyNameBytes, response.AccessToken, escape: false);
writer.WriteString(AccessTokenPropertyNameBytes, response.AccessToken);
}
if (!string.IsNullOrEmpty(response.ConnectionId))
{
writer.WriteString(ConnectionIdPropertyNameBytes, response.ConnectionId, escape: false);
writer.WriteString(ConnectionIdPropertyNameBytes, response.ConnectionId);
}
writer.WriteStartArray(AvailableTransportsPropertyNameBytes, escape: false);
writer.WriteStartArray(AvailableTransportsPropertyNameBytes);
if (response.AvailableTransports != null)
{
@ -62,20 +63,20 @@ namespace Microsoft.AspNetCore.Http.Connections
writer.WriteStartObject();
if (availableTransport.Transport != null)
{
writer.WriteString(TransportPropertyNameBytes, availableTransport.Transport, escape: false);
writer.WriteString(TransportPropertyNameBytes, availableTransport.Transport);
}
else
{
// Might be able to remove this after https://github.com/dotnet/corefx/issues/34632 is resolved
writer.WriteNull(TransportPropertyNameBytes, escape: false);
writer.WriteNull(TransportPropertyNameBytes);
}
writer.WriteStartArray(TransferFormatsPropertyNameBytes, escape: false);
writer.WriteStartArray(TransferFormatsPropertyNameBytes);
if (availableTransport.TransferFormats != null)
{
foreach (var transferFormat in availableTransport.TransferFormats)
{
writer.WriteStringValue(transferFormat, escape: false);
writer.WriteStringValue(transferFormat);
}
}
@ -87,7 +88,8 @@ namespace Microsoft.AspNetCore.Http.Connections
writer.WriteEndArray();
writer.WriteEndObject();
writer.Flush(isFinalBlock: true);
writer.Flush();
Debug.Assert(writer.CurrentDepth == 0);
}
public static NegotiationResponse ParseResponse(ReadOnlySpan<byte> content)

View File

@ -4,6 +4,7 @@
using System;
using System.Buffers;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Runtime.ExceptionServices;
using System.Text.Json;
@ -443,55 +444,56 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
private void WriteMessageCore(HubMessage message, IBufferWriter<byte> stream)
{
var writer = new Utf8JsonWriter(stream);
using var writer = new Utf8JsonWriter(stream);
writer.WriteStartObject();
switch (message)
{
case InvocationMessage m:
WriteMessageType(ref writer, HubProtocolConstants.InvocationMessageType);
WriteHeaders(ref writer, m);
WriteInvocationMessage(m, ref writer);
WriteMessageType(writer, HubProtocolConstants.InvocationMessageType);
WriteHeaders(writer, m);
WriteInvocationMessage(m, writer);
break;
case StreamInvocationMessage m:
WriteMessageType(ref writer, HubProtocolConstants.StreamInvocationMessageType);
WriteHeaders(ref writer, m);
WriteStreamInvocationMessage(m, ref writer);
WriteMessageType(writer, HubProtocolConstants.StreamInvocationMessageType);
WriteHeaders(writer, m);
WriteStreamInvocationMessage(m, writer);
break;
case StreamItemMessage m:
WriteMessageType(ref writer, HubProtocolConstants.StreamItemMessageType);
WriteHeaders(ref writer, m);
WriteStreamItemMessage(m, ref writer);
WriteMessageType(writer, HubProtocolConstants.StreamItemMessageType);
WriteHeaders(writer, m);
WriteStreamItemMessage(m, writer);
break;
case CompletionMessage m:
WriteMessageType(ref writer, HubProtocolConstants.CompletionMessageType);
WriteHeaders(ref writer, m);
WriteCompletionMessage(m, ref writer);
WriteMessageType(writer, HubProtocolConstants.CompletionMessageType);
WriteHeaders(writer, m);
WriteCompletionMessage(m, writer);
break;
case CancelInvocationMessage m:
WriteMessageType(ref writer, HubProtocolConstants.CancelInvocationMessageType);
WriteHeaders(ref writer, m);
WriteCancelInvocationMessage(m, ref writer);
WriteMessageType(writer, HubProtocolConstants.CancelInvocationMessageType);
WriteHeaders(writer, m);
WriteCancelInvocationMessage(m, writer);
break;
case PingMessage _:
WriteMessageType(ref writer, HubProtocolConstants.PingMessageType);
WriteMessageType(writer, HubProtocolConstants.PingMessageType);
break;
case CloseMessage m:
WriteMessageType(ref writer, HubProtocolConstants.CloseMessageType);
WriteCloseMessage(m, ref writer);
WriteMessageType(writer, HubProtocolConstants.CloseMessageType);
WriteCloseMessage(m, writer);
break;
default:
throw new InvalidOperationException($"Unsupported message type: {message.GetType().FullName}");
}
writer.WriteEndObject();
writer.Flush();
Debug.Assert(writer.CurrentDepth == 0);
}
private void WriteHeaders(ref Utf8JsonWriter writer, HubInvocationMessage message)
private void WriteHeaders(Utf8JsonWriter writer, HubInvocationMessage message)
{
if (message.Headers != null && message.Headers.Count > 0)
{
writer.WriteStartObject(HeadersPropertyNameBytes, escape: false);
writer.WriteStartObject(HeadersPropertyNameBytes);
foreach (var value in message.Headers)
{
writer.WriteString(value.Key, value.Value);
@ -500,64 +502,64 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
}
}
private void WriteCompletionMessage(CompletionMessage message, ref Utf8JsonWriter writer)
private void WriteCompletionMessage(CompletionMessage message, Utf8JsonWriter writer)
{
WriteInvocationId(message, ref writer);
WriteInvocationId(message, writer);
if (!string.IsNullOrEmpty(message.Error))
{
writer.WriteString(ErrorPropertyNameBytes, message.Error, escape: false);
writer.WriteString(ErrorPropertyNameBytes, message.Error);
}
else if (message.HasResult)
{
using var token = GetParsedObject(message.Result, message.Result?.GetType());
token.RootElement.WriteAsProperty(ResultPropertyNameBytes, ref writer);
token.RootElement.WriteAsProperty(ResultPropertyNameBytes, writer);
}
}
private void WriteCancelInvocationMessage(CancelInvocationMessage message, ref Utf8JsonWriter writer)
private void WriteCancelInvocationMessage(CancelInvocationMessage message, Utf8JsonWriter writer)
{
WriteInvocationId(message, ref writer);
WriteInvocationId(message, writer);
}
private void WriteStreamItemMessage(StreamItemMessage message, ref Utf8JsonWriter writer)
private void WriteStreamItemMessage(StreamItemMessage message, Utf8JsonWriter writer)
{
WriteInvocationId(message, ref writer);
WriteInvocationId(message, writer);
using var token = GetParsedObject(message.Item, message.Item?.GetType());
token.RootElement.WriteAsProperty(ItemPropertyNameBytes, ref writer);
token.RootElement.WriteAsProperty(ItemPropertyNameBytes, writer);
}
private void WriteInvocationMessage(InvocationMessage message, ref Utf8JsonWriter writer)
private void WriteInvocationMessage(InvocationMessage message, Utf8JsonWriter writer)
{
WriteInvocationId(message, ref writer);
writer.WriteString(TargetPropertyNameBytes, message.Target, escape: false);
WriteInvocationId(message, writer);
writer.WriteString(TargetPropertyNameBytes, message.Target);
WriteArguments(message.Arguments, ref writer);
WriteArguments(message.Arguments, writer);
WriteStreamIds(message.StreamIds, ref writer);
WriteStreamIds(message.StreamIds, writer);
}
private void WriteStreamInvocationMessage(StreamInvocationMessage message, ref Utf8JsonWriter writer)
private void WriteStreamInvocationMessage(StreamInvocationMessage message, Utf8JsonWriter writer)
{
WriteInvocationId(message, ref writer);
writer.WriteString(TargetPropertyNameBytes, message.Target, escape: false);
WriteInvocationId(message, writer);
writer.WriteString(TargetPropertyNameBytes, message.Target);
WriteArguments(message.Arguments, ref writer);
WriteArguments(message.Arguments, writer);
WriteStreamIds(message.StreamIds, ref writer);
WriteStreamIds(message.StreamIds, writer);
}
private void WriteCloseMessage(CloseMessage message, ref Utf8JsonWriter writer)
private void WriteCloseMessage(CloseMessage message, Utf8JsonWriter writer)
{
if (message.Error != null)
{
writer.WriteString(ErrorPropertyNameBytes, message.Error, escape: false);
writer.WriteString(ErrorPropertyNameBytes, message.Error);
}
}
private void WriteArguments(object[] arguments, ref Utf8JsonWriter writer)
private void WriteArguments(object[] arguments, Utf8JsonWriter writer)
{
writer.WriteStartArray(ArgumentsPropertyNameBytes, escape: false);
writer.WriteStartArray(ArgumentsPropertyNameBytes);
foreach (var argument in arguments)
{
var type = argument?.GetType();
@ -572,7 +574,7 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
else
{
using var token = GetParsedObject(argument, type);
token.RootElement.WriteAsValue(ref writer);
token.RootElement.WriteAsValue(writer);
}
}
writer.WriteEndArray();
@ -585,14 +587,14 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
return token;
}
private void WriteStreamIds(string[] streamIds, ref Utf8JsonWriter writer)
private void WriteStreamIds(string[] streamIds, Utf8JsonWriter writer)
{
if (streamIds == null)
{
return;
}
writer.WriteStartArray(StreamIdsPropertyNameBytes, escape: false);
writer.WriteStartArray(StreamIdsPropertyNameBytes);
foreach (var streamId in streamIds)
{
writer.WriteStringValue(streamId);
@ -600,17 +602,17 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
writer.WriteEndArray();
}
private static void WriteInvocationId(HubInvocationMessage message, ref Utf8JsonWriter writer)
private static void WriteInvocationId(HubInvocationMessage message, Utf8JsonWriter writer)
{
if (!string.IsNullOrEmpty(message.InvocationId))
{
writer.WriteString(InvocationIdPropertyNameBytes, message.InvocationId, escape: false);
writer.WriteString(InvocationIdPropertyNameBytes, message.InvocationId);
}
}
private static void WriteMessageType(ref Utf8JsonWriter writer, int type)
private static void WriteMessageType(Utf8JsonWriter writer, int type)
{
writer.WriteNumber(TypePropertyNameBytes, type, escape: false);
writer.WriteNumber(TypePropertyNameBytes, type);
}
private HubMessage BindCancelInvocationMessage(string invocationId)

View File

@ -4,6 +4,7 @@
using System;
using System.Buffers;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Text.Json;
@ -59,13 +60,14 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
/// <param name="output">The output writer.</param>
public static void WriteRequestMessage(HandshakeRequestMessage requestMessage, IBufferWriter<byte> output)
{
var writer = new Utf8JsonWriter(output, new JsonWriterState(new JsonWriterOptions() { SkipValidation = true }));
using var writer = new Utf8JsonWriter(output, new JsonWriterOptions() { SkipValidation = true });
writer.WriteStartObject();
writer.WriteString(ProtocolPropertyNameBytes, requestMessage.Protocol, escape: false);
writer.WriteNumber(ProtocolVersionPropertyNameBytes, requestMessage.Version, escape: false);
writer.WriteString(ProtocolPropertyNameBytes, requestMessage.Protocol);
writer.WriteNumber(ProtocolVersionPropertyNameBytes, requestMessage.Version);
writer.WriteEndObject();
writer.Flush(isFinalBlock: true);
writer.Flush();
Debug.Assert(writer.CurrentDepth == 0);
TextMessageFormatter.WriteRecordSeparator(output);
}
@ -77,7 +79,7 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
/// <param name="output">The output writer.</param>
public static void WriteResponseMessage(HandshakeResponseMessage responseMessage, IBufferWriter<byte> output)
{
var writer = new Utf8JsonWriter(output, new JsonWriterState(new JsonWriterOptions() { SkipValidation = true }));
using var writer = new Utf8JsonWriter(output, new JsonWriterOptions() { SkipValidation = true });
writer.WriteStartObject();
if (!string.IsNullOrEmpty(responseMessage.Error))
@ -85,10 +87,11 @@ namespace Microsoft.AspNetCore.SignalR.Protocol
writer.WriteString(ErrorPropertyNameBytes, responseMessage.Error);
}
writer.WriteNumber(MinorVersionPropertyNameBytes, responseMessage.MinorVersion, escape: false);
writer.WriteNumber(MinorVersionPropertyNameBytes, responseMessage.MinorVersion);
writer.WriteEndObject();
writer.Flush(isFinalBlock: true);
writer.Flush();
Debug.Assert(writer.CurrentDepth == 0);
TextMessageFormatter.WriteRecordSeparator(output);
}