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 _writtenMessages = new List(); 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 GetWrittenMessages() { lock (_lock) { return _writtenMessages.ToArray(); } } public bool TryParseMessage(ref ReadOnlySequence input, IInvocationBinder binder, out HubMessage message) { throw new NotSupportedException(); } public void WriteMessage(HubMessage message, IBufferWriter output) { output.Write(GetMessageBytes(message).Span); } public ReadOnlyMemory GetMessageBytes(HubMessage message) { _onWrite(); lock (_lock) { _writtenMessages.Add(message); } return DummySerialization; } public bool IsVersionSupported(int version) { throw new NotSupportedException(); } } }