private HubMessage CreateHubStreamInvocationMessage(ReadOnlySpan <byte> protobufMessage, object[] arguments)
        {
            var protobufStreamInvocationMessage = new StreamInvocationMessageProtobuf();

            protobufStreamInvocationMessage.MergeFrom(protobufMessage.ToArray());

            return(new StreamInvocationMessage(protobufStreamInvocationMessage.InvocationId, protobufStreamInvocationMessage.Target, arguments, protobufStreamInvocationMessage.StreamIds.ToArray())
            {
                Headers = protobufStreamInvocationMessage.Headers
            });
        }
        private void WriteStreamInvocationMessage(StreamInvocationMessage streamInvocationMessage, IBufferWriter <byte> output)
        {
            var protobufStreamInvocationMessage = new StreamInvocationMessageProtobuf
            {
                InvocationId = streamInvocationMessage.InvocationId,
                Target       = streamInvocationMessage.Target
            };

            if (streamInvocationMessage.Headers != null)
            {
                protobufStreamInvocationMessage.Headers.Add(streamInvocationMessage.Headers);
            }

            if (streamInvocationMessage.StreamIds != null)
            {
                protobufStreamInvocationMessage.StreamIds.Add(streamInvocationMessage.StreamIds.Select(id => id ?? ""));
            }

            var arguments = _argumentSerializer.SerializeArguments(streamInvocationMessage.Arguments);

            var packedMessage = MessageDescriptor.PackMessage(HubProtocolConstants.StreamInvocationMessageType, protobufStreamInvocationMessage.ToByteArray(), arguments);

            output.Write(packedMessage);
        }