Skip to content

Commit

Permalink
Use new service protocol (#24)
Browse files Browse the repository at this point in the history
  • Loading branch information
ccic authored and xscript committed Apr 23, 2018
1 parent c2d078f commit a4c59c0
Show file tree
Hide file tree
Showing 8 changed files with 96 additions and 127 deletions.
40 changes: 20 additions & 20 deletions src/Microsoft.Azure.SignalR.Protocols/ServiceProtocol.cs
Expand Up @@ -137,7 +137,7 @@ public ReadOnlyMemory<byte> GetMessageBytes(ServiceMessage message)
}
}

private void WriteMessageCore(ServiceMessage message, Stream packer)
private static void WriteMessageCore(ServiceMessage message, Stream packer)
{
switch (message)
{
Expand Down Expand Up @@ -188,33 +188,33 @@ private void WriteMessageCore(ServiceMessage message, Stream packer)
}
}

private void WriteHandshakeRequestMessage(HandshakeRequestMessage message, Stream packer)
private static void WriteHandshakeRequestMessage(HandshakeRequestMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 2);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.HandshakeRequestType);
MessagePackBinary.WriteInt32(packer, message.Version);
}

private void WriteHandshakeResponseMessage(HandshakeResponseMessage message, Stream packer)
private static void WriteHandshakeResponseMessage(HandshakeResponseMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 2);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.HandshakeResponseType);
MessagePackBinary.WriteString(packer, message.ErrorMessage);
}

private void WritePingMessage(PingMessage message, Stream packer)
private static void WritePingMessage(PingMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 1);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.PingMessageType);
}

private void WriteOpenConnectionMessage(OpenConnectionMessage message, Stream packer)
private static void WriteOpenConnectionMessage(OpenConnectionMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 3);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.OpenConnectionMessageType);
MessagePackBinary.WriteString(packer, message.ConnectionId);

if (message.Claims?.Any() == true)
if (message.Claims?.Length > 0)
{
MessagePackBinary.WriteMapHeader(packer, message.Claims.Length);
foreach (var claim in message.Claims)
Expand All @@ -229,71 +229,71 @@ private void WriteOpenConnectionMessage(OpenConnectionMessage message, Stream pa
}
}

private void WriteCloseConnectionMessage(CloseConnectionMessage message, Stream packer)
private static void WriteCloseConnectionMessage(CloseConnectionMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 3);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.CloseConnectionMessageType);
MessagePackBinary.WriteString(packer, message.ConnectionId);
MessagePackBinary.WriteString(packer, message.ErrorMessage);
}

private void WriteConnectionDataMessage(ConnectionDataMessage message, Stream packer)
private static void WriteConnectionDataMessage(ConnectionDataMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 3);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.ConnectionDataMessageType);
MessagePackBinary.WriteString(packer, message.ConnectionId);
MessagePackBinary.WriteBytes(packer, message.Payload);
}

private void WriteMultiConnectionDataMessage(MultiConnectionDataMessage message, Stream packer)
private static void WriteMultiConnectionDataMessage(MultiConnectionDataMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 3);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.MultiConnectionDataMessageType);
WriteStringArray(message.ConnectionList, packer);
WritePayloads(message.Payloads, packer);
}

private void WriteUserDataMessage(UserDataMessage message, Stream packer)
private static void WriteUserDataMessage(UserDataMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 3);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.UserDataMessageType);
MessagePackBinary.WriteString(packer, message.UserId);
WritePayloads(message.Payloads, packer);
}

private void WriteMultiUserDataMessage(MultiUserDataMessage message, Stream packer)
private static void WriteMultiUserDataMessage(MultiUserDataMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 3);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.UserDataMessageType);
WriteStringArray(message.UserList, packer);
WritePayloads(message.Payloads, packer);
}

private void WriteBroadcastDataMessage(BroadcastDataMessage message, Stream packer)
private static void WriteBroadcastDataMessage(BroadcastDataMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 3);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.BroadcastDataMessageType);
WriteStringArray(message.ExcludedList, packer);
WritePayloads(message.Payloads, packer);
}

private void WriteJoinGroupMessage(JoinGroupMessage message, Stream packer)
private static void WriteJoinGroupMessage(JoinGroupMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 3);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.JoinGroupMessageType);
MessagePackBinary.WriteString(packer, message.ConnectionId);
MessagePackBinary.WriteString(packer, message.GroupName);
}

private void WriteLeaveGroupMessage(LeaveGroupMessage message, Stream packer)
private static void WriteLeaveGroupMessage(LeaveGroupMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 3);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.LeaveGroupMessageType);
MessagePackBinary.WriteString(packer, message.ConnectionId);
MessagePackBinary.WriteString(packer, message.GroupName);
}

private void WriteGroupBroadcastDataMessage(GroupBroadcastDataMessage message, Stream packer)
private static void WriteGroupBroadcastDataMessage(GroupBroadcastDataMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 4);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.GroupBroadcastDataMessageType);
Expand All @@ -302,17 +302,17 @@ private void WriteGroupBroadcastDataMessage(GroupBroadcastDataMessage message, S
WritePayloads(message.Payloads, packer);
}

private void WriteMultiGroupBroadcastDataMessage(MultiGroupBroadcastDataMessage message, Stream packer)
private static void WriteMultiGroupBroadcastDataMessage(MultiGroupBroadcastDataMessage message, Stream packer)
{
MessagePackBinary.WriteArrayHeader(packer, 3);
MessagePackBinary.WriteInt32(packer, ServiceProtocolConstants.MultiGroupBroadcastDataMessageType);
WriteStringArray(message.GroupList, packer);
WritePayloads(message.Payloads, packer);
}

private void WriteStringArray(string[] array, Stream packer)
private static void WriteStringArray(string[] array, Stream packer)
{
if (array?.Any() == true)
if (array?.Length > 0)
{
MessagePackBinary.WriteArrayHeader(packer, array.Length);
foreach (var value in array)
Expand All @@ -326,9 +326,9 @@ private void WriteStringArray(string[] array, Stream packer)
}
}

private void WritePayloads(IDictionary<string, byte[]> payloads, Stream packer)
private static void WritePayloads(IDictionary<string, byte[]> payloads, Stream packer)
{
if (payloads?.Any() == true)
if (payloads?.Count > 0)
{
MessagePackBinary.WriteMapHeader(packer, payloads.Count);
foreach (var payload in payloads)
Expand Down
2 changes: 2 additions & 0 deletions src/Microsoft.Azure.SignalR/DependencyInjectionExtensions.cs
Expand Up @@ -4,6 +4,7 @@
using System;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Azure.SignalR;
using Microsoft.Azure.SignalR.Protocol;
using Microsoft.Extensions.Options;

namespace Microsoft.Extensions.DependencyInjection
Expand Down Expand Up @@ -33,6 +34,7 @@ public static ISignalRServerBuilder AddAzureSignalR(this ISignalRServerBuilder b
public static ISignalRServerBuilder AddAzureSignalRCore(this ISignalRServerBuilder builder)
{
builder.Services.AddSingleton(typeof(HubLifetimeManager<>), typeof(HubHostLifetimeManager<>));
builder.Services.AddSingleton(typeof(IServiceProtocol), typeof(ServiceProtocol));
builder.Services.AddSingleton(typeof(IClientConnectionManager), typeof(ClientConnectionManager));
builder.Services.AddSingleton(typeof(IServiceConnectionManager), typeof(ServiceConnectionManager));
builder.Services.AddSingleton(typeof(IConnectionProvider), typeof(ConnectionProvider));
Expand Down
8 changes: 6 additions & 2 deletions src/Microsoft.Azure.SignalR/HubHost/HubHost.cs
Expand Up @@ -8,6 +8,7 @@
using Microsoft.AspNetCore.Http.Connections;
using Microsoft.AspNetCore.Http.Connections.Client;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Azure.SignalR.Protocol;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

Expand All @@ -23,14 +24,17 @@ internal class HubHost<THub> where THub : Hub
private IConnectionProvider _connectionServiceProvider;
private IServiceConnectionManager _serviceConnectionManager;
private IClientConnectionManager _clientConnectionManager;
private IServiceProtocol _serviceProtocol;
private readonly string _name = $"HubHost<{typeof(THub).FullName}>";

public HubHost(IServiceConnectionManager serviceConnectionManager,
public HubHost(IServiceProtocol serviceProtocol,
IServiceConnectionManager serviceConnectionManager,
IClientConnectionManager clientConnectionManager,
IConnectionProvider connectionServiceProvider,
IOptions<ServiceOptions> options,
ILoggerFactory loggerFactory)
{
_serviceProtocol = serviceProtocol;
_serviceConnectionManager = serviceConnectionManager;
_clientConnectionManager = clientConnectionManager;
_connectionServiceProvider = connectionServiceProvider;
Expand Down Expand Up @@ -71,7 +75,7 @@ private Uri GetServiceUrl()
private ServiceConnection CreateServiceConnection(Uri serviceUrl, HttpOptions httpOptions)
{
var httpConnection = new HttpConnection(serviceUrl, HttpTransportType.WebSockets, _loggerFactory, httpOptions);
return new ServiceConnection(_clientConnectionManager, serviceUrl, httpConnection, _loggerFactory);
return new ServiceConnection(_serviceProtocol, _clientConnectionManager, serviceUrl, httpConnection, _loggerFactory);
}
}
}

0 comments on commit a4c59c0

Please sign in to comment.