62 lines
1.7 KiB
C#
62 lines
1.7 KiB
C#
using System;
|
|
using System.Buffers;
|
|
using System.Collections.Generic;
|
|
using Microsoft.AspNetCore.Connections;
|
|
using Microsoft.AspNetCore.SignalR.Protocol;
|
|
|
|
namespace Microsoft.AspNetCore.SignalR.Tests
|
|
{
|
|
public class DummyHubProtocol : IHubProtocol
|
|
{
|
|
private readonly Action _onWrite;
|
|
private readonly object _lock = new object();
|
|
private readonly List<HubMessage> _writtenMessages = new List<HubMessage>();
|
|
|
|
public static readonly byte[] DummySerialization = new byte[] { 0x2A };
|
|
|
|
public string Name { get; }
|
|
public int Version => 1;
|
|
public TransferFormat TransferFormat => TransferFormat.Text;
|
|
|
|
public DummyHubProtocol(string name, Action onWrite = null)
|
|
{
|
|
_onWrite = onWrite ?? (() => { });
|
|
Name = name;
|
|
}
|
|
|
|
public IReadOnlyList<HubMessage> GetWrittenMessages()
|
|
{
|
|
lock (_lock)
|
|
{
|
|
return _writtenMessages.ToArray();
|
|
}
|
|
}
|
|
|
|
public bool TryParseMessage(ref ReadOnlySequence<byte> input, IInvocationBinder binder, out HubMessage message)
|
|
{
|
|
throw new NotSupportedException();
|
|
}
|
|
|
|
public void WriteMessage(HubMessage message, IBufferWriter<byte> output)
|
|
{
|
|
output.Write(GetMessageBytes(message).Span);
|
|
}
|
|
|
|
public ReadOnlyMemory<byte> GetMessageBytes(HubMessage message)
|
|
{
|
|
_onWrite();
|
|
lock (_lock)
|
|
{
|
|
_writtenMessages.Add(message);
|
|
}
|
|
|
|
return DummySerialization;
|
|
}
|
|
|
|
public bool IsVersionSupported(int version)
|
|
{
|
|
throw new NotSupportedException();
|
|
}
|
|
}
|
|
}
|