Beispiel #1
0
    /// <inheritdoc />
    public ReadOnlyMemory <byte> GetMessageBytes(HubMessage message)
    {
        var memoryBufferWriter = MemoryBufferWriter.Get();

        try
        {
            var writer = new MessagePackWriter(memoryBufferWriter);

            // Write message to a buffer so we can get its length
            WriteMessageCore(message, ref writer);

            var dataLength   = memoryBufferWriter.Length;
            var prefixLength = BinaryMessageFormatter.LengthPrefixLength(memoryBufferWriter.Length);

            var array = new byte[dataLength + prefixLength];
            var span  = array.AsSpan();

            // Write length then message to output
            var written = BinaryMessageFormatter.WriteLengthPrefix(memoryBufferWriter.Length, span);
            Debug.Assert(written == prefixLength);
            memoryBufferWriter.CopyTo(span.Slice(prefixLength));

            return(array);
        }
        finally
        {
            MemoryBufferWriter.Return(memoryBufferWriter);
        }
    }
Beispiel #2
0
        ///// <inheritdoc />
        public ReadOnlyMemory <byte> GetMessageBytes(HubMessage message)
        {
            using var writer = new ArrayBufferWriter <byte>();

            // Write message to a buffer so we can get its length
            WriteMessageCore(message, writer);

            var memory = writer.WrittenMemory;

            var dataLength   = memory.Length;
            var prefixLength = BinaryMessageFormatter.LengthPrefixLength(dataLength);

            var array = new byte[dataLength + prefixLength];
            var span  = array.AsSpan();

            // Write length then message to output
            var written = BinaryMessageFormatter.WriteLengthPrefix(dataLength, span);

            Debug.Assert(written == prefixLength);

            memory.Span.CopyTo(span.Slice(prefixLength));

            return(array);
        }