public ReadOnlyMemory GetMessageBytes()

in src/Microsoft.Azure.SignalR/Internals/FakeBlazorPackHubProtocol.cs [29:74]


        public ReadOnlyMemory<byte> GetMessageBytes(SignalRProtocol.HubMessage message) =>
            throw new NotSupportedException();

        public bool IsVersionSupported(int version) => version <= Version;

        public bool TryParseMessage(ref ReadOnlySequence<byte> input, IInvocationBinder binder, out SignalRProtocol.HubMessage message)
        {
            if (!BinaryMessageParser.TryParseMessage(ref input, out var payload))
            {
                message = null;
                return false;
            }
            var first = payload.First.Span;
            if (first.Length < 2)
            {
                first = payload.Slice(0, 2).ToArray();
            }
            // we do not want to refer message pack or Microsoft.AspNetCore.SignalR.Protocols.MessagePack
            // So we parse message pack directly.
            // ref: https://github.com/msgpack/msgpack/blob/master/spec.md
            if (first[0] > 0x90 && first[0] < 0x9f && first[1] <= 128)
            {
                var type = first[1];
                switch (type)
                {
                    case 1: // Invocation
                    case 2: // StreamItem
                    case 3: // Completion
                    case 4: // StreamInvocation
                    case 5: // CancelInvocation
                        message = Invocation;
                        return true;
                    case 7: // Close
                        message = Close;
                        return true;
                    case 6: // Ping
                        message = Data;
                        return true;
                    default:
                        message = null;
                        return false;
                }
            }
            message = null;
            return false;
        }